
CPU는 명령어를 실행하는 과정에서 사용자 영역을 실행할 때의 모드와 커널 영역을 실행할 때의 모드를 구분하여 실행합니다.
이때 사용자 영역에 적재된 코드를 실행할 때의 실행 모드를 사용자 모드(운영체제의 서비스 제공x)라고 하고
커널 영역에 적재된 코드를 실행할 때의 실행 모드를 커널 모드(운영체제의 서비스 제공받음)라고 합니다.
운영체제 다수의 프로세스 관리 -> 식별할려면? -> PCB(프로세스 제어 블록) 필요
PCB -> 프로세스와 관련된 다양한 정보 내포 PID, 프로세스 상태 등
프로세스 실행은 CPU의 자원을 할당 받았을 때 가능 -> 타임아웃 인터럽트 시 자원 반납
운영체제는 이제 문맥을 프로세스 PCB에 기록하고 다른 프로세스에 CPU 자원 줌
문맥 교환 자주 발생 시 -> 캐시 미스 발생 증가 -> 메모리로부터 내용 가져오면 오버헤드 발생
프로세스 실행 도중 입출력 작업 만나면 대기 하고 작업 재개하면 -> 블록킹 입출력
대기하지 않고 입출력 작업은 맡기고 다음 할 일 먼저하고 -> 논블록킹 입출력
가장 큰 차이는 자원 공유 여부
프로세스는 독립적임, 멀티 스레드는 하나의 프로세스 내부의 자원을 공유함(코드, 데이터, 힙)
공유 메모리 기반 IPC는 프로세스가 공유하는 메모리 영역을 확보하는 시스템 콜을 기반으로 수행될 수도 있고,
간단하게 프로세스가 공유하는 변수나 파일을 활용할 수도 있다.
메시지 전달은 프로세스 간에 주고받을 데이터가 커널을 거쳐 송수신되는 통신 방식
메시지 전달 기반 IPC는 메시지를 보내는 수단과 받는 수단이 명확하게 구현되어 있다.
파이프, 시그널, 소켓, 원격 프로시저 호출(RPC)
임계구역 공유 자원에 접근하는 코드 중 동시에 실행했을 때 문제가 발생할 수 있는 코드를 의미한다.
프로세스 혹은 스레드가 동시에 임계 구역의 코드를 실행하여 문제가 발생하는 상황 레이스 컨디션이라 한다.
세마포(철도 신호기)
변수 S: 사용 가능한 공유자원의 개수를 나타내는 변수
wait() 함수 : 임계 구역 진입 전 호출하여 S--는 무조건 하고 S 0 이하면 기달림
signal() 함수 : 임계 구역 진입 후 호출하는 함수 S++ (이때 S가 0이하라면 대기하는 프로세스가 있으므로 깨워준다.)
조건 변수와 모니터
조건변수란 실행 순서 제어를 위한 동기화 도구이다.
스레드 두 개 있을 때 하나는 조건으로 wait 대기시키고 조건 충족 시 signal 로 호출
모니터는 공유 자원과 그 공유 자원을 다루는 함수(인터페이스)로 구성된 동기화 도구
모니터 안에 진입하여 실행되는 프로세스 및 스레드는 항상 하나여야 한다. (자바 synchronized)
조건 4가지 충족해야 교착 상태 발생
CPU 활용률 (작업처리시간)/(전체 CPU 가동시간)
CPU 버스트 (CPU를 이용하는 작업)
입출력 버스트(입출력 장치를 기다리는 작업)
입출력 집중 프로세스를 가능한 빨리 실행시켜 끊임없이 입출력장치를 작동시킨 다음,
CPU 집중 프로세스에 집중적으로 CPU를 할당하는 것이 합리적
CPU가 이해하는 논리주소를 MMU(메모리 관리 장치)는 물리 주소로 바꿔 메모리와 소통할 수 있게 해준다.
메모리 적재도니 프로세스들 중 이용하지 않는 것들은 임시로 스왑 영역으로 옮긴다.
메모리에 프로세스 적재할 때 빈틈이 생긴다 이를 외부 단편화라 함(가상 메모리 주소 공간 바깥이라 외부임)
실행하고자 하는 프로그램의 일부만 메모리에 적재해, 실제 메모리보다 더 큰 프로세스를 실행할 수 있도록 만드는 메모리 관리 기법
프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 나누고
물리 주소 공간을 페이지와 동일 크기의 프레임으로 나눠 페이지를 프레임에 할당
프로세스를 실행하기 위해 전체 프로세스가 메모리에 적재될 필요는 없다.
물리 메모리 내에 페이지 불연속적 배치 가능 -> 모든 페이지의 위치를 알기 위해서 페이지 테이블 활용
페이지 테이블 내의 페이지 엔트리 에서 유효 비트 체크
0 > 페이지 폴트 발생 > 원하는 페이지 메모리로 가져와 유효 비트 1로 바꿔줌 > 실행
문제점 프로세스의 논리 주소 공간을 페이지라는 일정한 크기로 나누기 때문에
페이지 하나의 크기보다도 작은 공간이 남는 경우를 내부 단편화라고 한다.