CPU는 프로세스를 실행할 때 어떤 프로그램에게
CPU 소유권을 줄것인지 결정
합니다.
CPU의 이용율은 높게, 주어진 시간에 많은 일을 하게, 준비 큐에 있는 프로세스는 적게,
응답 시간을 짧게 설정하는 것을 목표로 합니다.
운영체제에서 프로세스에 대한
메타데이터를 저장
한 데이터로프로세스 제어 블록(PCB)
이라고 합니다.
프로세스가 생성되면 운영체제는 메타데이터를 저장할 해당 PCB를 생성합니다.
PCB의 구조는 프로세스스케쥴링 상태
,프로세스 ID
,프로세스 권한
,프로그램 카운터
,
CPU 레지스터
,CPU 스케쥴링 정보
,계정 정보
(프로세스 실행에 사용된 CPU 사용량),
I/O 상태정보
(프로세스에 할당된 I/O 디바이스 목록)이 있습니다.
컨텍스트 스위칭은
PCB를 교환하는 과정
을 말합니다.
한 프로세스에할당된 시간
이 끝나거나인터럽트
에 의해 발생합니다.
여러 프로그램이동시에 실행된 것처럼
보이지만 실제로실행된 프로세스는 1개
이며
컨텍스트 스위칭으로실행 프로세스
를빠른 속도로 변경
하여 실행합니다.(동시성)
스레드
에서도 Context Switching이 일어나지만 스택 영역을 제외하고
모든 메모리를 공유
하기 때문에 컨텍스트 스위칭 비용이 적고 시간도 적게
걸립니다.
멀티프로세스는 IPC가 가능하며 IPC는
프로세스끼리 데이터를 주고받고 공유 데이터를 관리
하는 것을 말합니다. 대표적으로 클라이언트와 서버가 있습니다. 클라이언트(프로세스)는 데이터를 요청하고 서버(프로세스)는 클라이언트 요청에 응답하기 때문입니다. 스레드를 사용하는 것보다 속도가 떨어집니다.
IPC종류로소켓
,공유메모리
,파일
,익명파이프
,명명파이프
,메시지 큐
가 있습니다.
시스템 안에서 각 프로세스, 스레드가
함께 접근할 수 있는
데이터와 같은 자원이나 변수 등을
공유 자원
이라고 합니다. 이 공유 자원을2개 이상의 프로세스가 읽거나 쓰는 상황
을
경쟁상태(race condition)
이라고 합니다.
공유 자원에
접근할 때 순서
등의 이유로결과가 달라지는 영역
을임계 영역(Critical section)
이라고 합니다. 이를 해결하기 위해상호배제
,한정대기
,융통성
이란조건을 만족
하는
뮤텍스
,세마포어
,모니터
라는 3가지 방법이 있습니다.
상호배제
: 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없음
한정대기
: 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안됨
융통성
: 한 프로세스가 다른 프로세스의 일을 방해해서는 안됨
공유 자원을 사용하기전에 설정하고 사용한 후에 해제하는 잠금입니다.
뮤텍스는 하나의 상태만 가집니다.
하나의 공유자원을 사용하기 위해 여러 스레드들이 공유자원에 대해
원활하게 관리하기 위해 사용되는 동기화 프로그래밍 기법 입니다.
wait 함수
와signal 함수
의 연산을 통해 자원 사용을 마치면
대기 스레드에 알려주어서 스레드를 동기화 합니다.
wait 함수
: 자신의 차례가 올때까지 기다리는 함수로 P 함수
라고도 합니다.
signal 함수
: 다음 프로세스로 순서를 넘겨주는 함수로 V 함수
라고도 합니다.
둘 이상의 프로세스나 스레드가 공유자원에 안전하게 접근할 수 있도록
공유 자원을 숨기고
공유자원접근에 대해 인터페이스만 제공
해줍니다.
두 개 이상의 프로세스들이
서로가 가진 자원을 기다리며
중단된 상태
입니다.
윈도우에서 프로세스를 실행시키다응답 없음
이라고 뜰 때가 있는데
이 경우가교착상태
(Deadlock)가 발생한 경우 입니다.
이러한 교착 상태를 해결하기 위해 여러가지 방식이 있지만
현대의 OS나 Pintos 프로젝트에서는 주로Round-Robin 방식으로 구현
되어 있습니다.
Pintos가 기본적으로 제공하는 스케줄러는
Round-Robin(RR)으로 구현
되어 있습니다.자원 사용 제한 시간
을 두어 프로세스에 할당된시간이 지나면 자원을 반납
하는
방식의 알고리즘을 활용하여 특정 프로세스의자원 독점(monopoly)를 방지
합니다.
단점
으로는Context Switch overhead
가 큽니다.