본문 바로가기

CS/Operating System

(13)
프로세스 동기화, 데드락(교착 상태) 공유 자원, 임계 영역(Critical Section), 경쟁 상태(Race Condition)공유 자원: 여러 스레드가 동시에 접근할 수 있는 자원을 공유 자원이라고 한다.임계 영역: 공유 자원 중 여러 스레드가 동시에 접근했을 때 문제가 생길 수 있는 부분을 임계 영역이라고 한다.경쟁 상태: 둘 이상의 스레드가 공유 자원에 동시 접근했을 때 실행 순서에 따라 결과 값이 달라지는 상황을 의미한다.따라서 경쟁 상태를 방지하고 데이터 일관성을 보장하기 위해 임계 영역에 하나의 스레드만 접근할 수 있도록 제어해야 한다.* Race Condition은 CPU 코어가 1개일 때도 발생할까?결론은 Race Condition은 CPU 코어가 1개일 때도 발생한다. CPU 코어가 1개인 경우에는 동시에 하나의 프로세..
인터럽트와 입출력 방식 인터럽트 CPU는 특별한 일이 없으면 현재 수행 중인 프로세스의 다음 명령을 순차적으로 수행한다. CPU는 매번 프로그램 카운터가 가리키는 곳에 있는 명령어를 수행한다. 따라서 현재 수행 중인 프로세스로부터 CPU를 회수해서 CPU가 다른 일을 수행하도록 하기 위해서는 인터럽트가 필요하다. 특권 명령 특권 명령은 운영체제 내에서 특정한 권한이 필요한 명령어를 말한다. 따라서 특권 명령을 실행하기 위해서는 일반 사용자 프로그램이 실행하는 것은 불가하고 인터럽트를 발생시켜 운영체제만 특권 명령을 실행할 수 있다. 즉, 모드 비트가 0일 때(=커널 모드)만 특권 명령을 실행할 수 있다. 인터럽트의 종류(발생 상황) 인터럽트는 인터럽트를 발생시키는 주체가 누구냐에 따라 하드웨어 인터럽트와 소프트웨어 인터럽트로 ..
스케줄러 스케줄러란 어떤 프로세스에게 자원을 할당할지를 결정하는 운영체제 커널의 코드를 의미한다. 즉, 스케줄러는 CPU가 어떤 프로세스를 실행할지 결정하는 역할을 한다.스케줄러의 종류장기 스케줄러(작업 스케줄러)역할: 시작 프로세스 중 어떤 프로세스에게 메모리를 할당하고 준비 큐에 삽입할 것인지를 결정한다. 즉, 새로운 프로세스가 실행되기 전에 동작한다. 즉, 장기 스케줄러는 메모리에 동시에 올라가 있는 프로세스의 수를 조절하는 역할을 한다. (degree of multiprogramming을 제어)주기: 상대적으로 덜 빈번하게 작동한다. 주로 새로운 프로세스를 실행하려 할 때 작동한다.중기 스케줄러시스템의 메모리 부담을 줄이기 위해 메모리에 있는 프로세스를 일시적으로 하드디스크로 내보내거나(스왑 아웃), 하드..
블로킹/논블로킹과 동기/비동기 처리 방식 블로킹(Blocking) / 논블로킹(Non-Blocking) 블로킹(Blocking)과 논블로킹(Non-Blocking)은 I/O 작업을 처리하는 방법이다. 블로킹: I/O 작업을 요청한 스레드는 I/O 작업이 완료될 때까지 봉쇄 상태가 되어 대기한다. 논블로킹: I/O 작업을 요청한 스레드는 I/O 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다. 즉, 운영체제 관점에서 살펴보면 다음 블로그(https://olsohee.tistory.com/150)에서 설명하는 동기식 입출력 방식이 블로킹 방식이고, 비동기식 입출력 방식이 논블로킹 방식이다. 그리고 주의할 점은 블로킹 방식에서 I/O 작업을 요청한 스레드가 봉쇄 상태가 되었더라도, 그동안 CPU는 다른 스레드를 실행한다는 것이다. 네트워크 ..
디스크 관리 디스크는 컴퓨터 시스템의 대표적인 2차 저장장치이다. 메모리는 휘발성 저장장치이므로 전원이 나가면 그 내용이 모두 사라진다. 따라서 컴퓨터에서 수행한 작업의 결과를 영구적으로 보관하기 위해서는 디스크 같은 2차 저장장치를 이용해야 한다. 디스크의 구조 논리블록: 디스크 외부에서는 디스크를 일정한 크기의 저장공간들로 이루어진 1차원 배열처럼 취급하게 된다. 그리고 이때 이 일정한 크기의 저장공간을 논리블록이라고 한다. 디스크에 데이터가 저장될 때 논리블록 단위로 저장되고, 디스크 외부로 입출력이 일어날 때도 논리블록 단위로 전송된다. 섹터: 각 논리블록이 저장되는 디스크 내의 물리적 위치이다. 디스크 컨트롤러가 논리블록을 디스크 내의 섹터 번호로 매핑하는 역할을 담당한다. 즉, 해당 논리블록이 저장된 물리..
메모리 관리 기법 - 페이징 기법 페이징 기법페이징 기법은 논리적 메모리를 동일 크기의 페이지로 나누고, 물리적 메모리도 페이지와 동일 크기의 페이지 프레임으로 나눈다. 장점프로세스의 논리적 주소 공간과 물리적 메모리 공간이 모두 같은 크기의 페이지/프레임 단위로 나누어지기 때문에 외부 조각이 발생하지 않는다. 단점 프로그램의 크기가 항상 페이지 크기로 정확히 나누어 떨어지지 않을 수 있기 때문에 프로세스의 논리적 주소 공간 중 제일 마지막에 위치한 페이지에서는 물리적으로 내부조각이 발생할 수 있다.페이징 기법은 하나의 프로세스라 하더라도 페이지 단위로 물리적 메모리에 올리는 위치가 상이하다. 따라서 주소 바인딩 작업이 페이지 단위로 이루어지기 때문에 주소 바인딩 과정이 연속할당 방식에 비해 복잡하다. 페이지 테이블하나의 프로세스에는 여..
가상 메모리와 메모리 관리 기법 가상 메모리가상 메모리는 메모리 관리 기법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 프로그램이 실행되면 프로그램의 모든 코드와 데이터는 가상 메모리에 할당된다. 가상 메모리는 추상화된 메모리 공간으로, 각 프로세스마다 가상 메모리를 갖는다. 그러나 가상 메모리에 할당된 코드와 데이터는 물리적 메모리에 로드될 때까지 실제 메모리에 존재하지 않는다. 가상 주소(논리 주소): 가상적으로 주어진 주소물리 주소(실주소): 실제 RAM 메모리 상에서의 주소메모리 관리자(운영체제)는 프로그램을 물리적 메모리에 적재하기도 하고, 물리적 메모리 부족 시 스왑 영역으로 스왑 아웃시키기도 한다. 즉, 프로세스 입장에서는 물리적 메모리를 신경쓰지 않고 자신이 필요한 만큼 가상 주..
CPU 스케줄링 CPU 버스트 시간에 따른 프로세스의 종류 기계어 명령은 다음 세 가지 명령으로 구분된다. CPU 내에서 수행되는 명령: CPU 내에서만 수행되므로 명령 수행 속도가 매우 빠르다. (ex, add 명령: 레지스터에 있는 두 값을 더해 레지스터에 저장) 메모리 접근을 필요로 하는 명령: CPU 내에서 수행되는 명령에 비해 오래 소요되지만 비교적 짧은 시간에 수행할 수 있는 명령에 해당된다. (ex, load 명령: 메모리의 데이터를 CPU로 읽어 들임, store 명령: CPU에서 계산된 결과값을 메모리에 저장) 입출력을 동반하는 명령: CPU나 메모리 접근 명령에 비해 아주 오랜 시간이 소요된다. CPU 내에서 수행되는 명령과 메모리 접근을 필요로 하는 명령은 사용자 프로그램이 직접 수행할 수 있는 일반..