운영체제
- 운영체제 : 실행 할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
- 자원 : 프로그램 실행에 마땅히 필요한 요소
- 커널 영역 : 운영체제를 적재하는 공간
- 사용자 영역 : 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역
운영체제의 심장, 커널
- 커널 : 운영체제의 핵심 서비스를 담당하는 부분
- 사용자 인터페이스 : 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로
- 그래픽 유저 인터페이스
- 커맨드 라인 인터페이스
이중모드와 시스템 호출
- 이중모드 : CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드 : 운영체제 서비스를 제공받을 수 없는 실행 모드
- 커널 모드 : 운영체제 서비스를 제공받을 수 있는 실행 모드
- 시스템 호출 : 운영체제의 서비스를 제공받기 위해 커널 모드로 전환하는 방법
운영체제의 핵심 서비스
- 프로세스 관리 : 동시다발적으로 생성, 실행, 삭제되는 다양한 프로세스를 일목요연하게 관리
- 프로세스 : 메모리에 적재되어서 현재 실행되는 프로그램
- 자원 접근 및 할당
- CPU
- CPU 스케줄링 : 얼마나 오래 CPU를 이용하게 할지를 결정
- 메모리
- 입출력 장치
- CPU
- 파일 시스템 관리
프로세스 개요
- 프로세스 : 보조기억장치에 저장된 프로그램을 메모리에 적재하고 실행하는 순간의 프로그램
- 포그라운드 프로세스 : 사용자가 볼 수 있는 공간에서 실행되는 프로세스
- 백그라운드 프로세스 : 사용자가 볼 수 없는 공간에서 실행되는 프로세스
프로세스 제어 블록
- 프로세스 제어 블록 (PCB) : 프로세스와 관련된 정보를 저장하는 자료 구조
- 프로세스 ID (PID) : 특정 프로세스를 실별하기 위해 부여하는 고유한 번호
- 레지스터 값 : PCB 안에 해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값들이 담김
- 프로세스 상태
- 생성상태
- 준비생태
- 실행상태
- 대기상태
- 종료상태
- CPU 스케줄링 정보 : 프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보
- 메모리 관리 정보
- 사용자 파일과 입출력장치 목록 : 어떤 파일을 열었는지 어떤 입출력장치가 할당 되었는지 PCB에 명시
프로세스의 메모리 영역
- 스택 영역 : 데이터를 일시적으로 저장하는 공간
- 힙 영역 : 프로그램을 만드는 사용자, 즉 프로그래머가 직접 할당할 수 있는 저장 공간
- 데이터 영역 : 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간
- 코드 영역 : 기계어로 이루어진 명령어가 저장
프로세스 상태와 계층 구조
- 프로세스 상태
- 생성 상태 : 프로세스를 생성 중인 상태
- 준비 상태 : 당장이라도 CPU를 할당받아 실행 할 수 있지만, 아직 자신의 차례가 아니기 때문에 기다리는 중
- 실행 상태 : CPU를 할당받아 실행 중인 상태
- 대기 상태 : 입출력장치의 작업을 기다리는 상태
- 종료 상태 : 프로세스가 종료된 상태
- 프로세스 계층 구조
- 부모 프로세스 : 새 프로세스를 생성한 프로세스
- 자식 프로세스 : 부모 프로세스에 의해 생성된 프로세스
- 프로세스 생성 기법
- fork : 부모 프로세스는 fork를 통해 자신의 복사본을 자식 프로세스로 생성
- exec : 자식 프로세스는 exec를 통해 자신의 메모리 공간을 다른 프로그램으로 교체
스레드 (소프트웨어적 스레드)
- 스레드 : 프로세스를 구성하는 실행 흐름 단위
멀티프로세스와 멀티스레드
- 멀티프로세스 : 여러 프로세스를 동시에 실행하는 것
- 멀티스레드 : 여러 스레드로 프로세스를 동시에 실행하는 것
- 멀티프로세스와 멀티스레드의 차이점 : 프로세스끼리는 자원을 공유하지 않지만 스레드끼리는 자원을 공유한다는 점
CPU 스케줄링 개요
- CPU 스케줄링 : 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것
- 프로세스 우선순위 : 우선순위가 높은 프로세스가 더 빨리 더 자주 실행됨
스케줄링 큐
- 운영체제는 메모리에 적재되고 싶은 프로세스, 입출력장치를 사용하고 싶은 프로세스들을 모두 줄 세우는 것
- 준비 큐 : CPU를 이용하고 싶은 프로세스들이 서는 줄
- 대기 큐 : 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄
선점형과 비선점형 스케줄링
- 선점형 스케줄링 : 프로세스가 CPU를 비롯한 자원을 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 스케줄링 방식
- 비선점형 스케줄링 : 하나의 프로세스가 자원을 사용하고 있다면 그 프로세스가 종료되거나 스스로 대기 상태에 접어들기 전까진 다른 프로세스가 끼어들 수 없는 스케줄링 방식
CPU 스케줄링 알고리즘
- CPU 스케줄링 알고리즘
- 선입 선처리 스케줄링 : 준비 큐에 삽입된 순서대로 CPU를 할당
- 문제점 : 프로세스들이 기다리는 시간이 매우 길다 ( =호위효과)
- 최단 작업 우선 스케줄링 : 준비 큐에 삽입된 프로세스들 중 CPU 사용 시간의 길이가 가장 짧은 프로세스부터 CPU를 할당
- 라운드 로빈 스케줄링 : 정해진 시간만큼만 돌아가며 CPU를 할당
- 최소 잔여 시간 우선 스케줄링 : 프로세스들은 정해진 타임 슬라이스만큼 CPU를 사용하되, CPU를 사용할 다음 프로세스로는 남아있는 작업 시간이 가장 적은 프로세스가 선택
- 우선순위 스케줄링 : 가장 높은 우선순위를 가진 프로세스에 CPU를 할당
- 기아현상 : 우선순위 높은 프로세스만 실행하고 우선순위 낮은 프로세스는 실행 연기
- 에이징 : 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방식
- 다단계 큐 스케줄링 : 우선순위별로 준비 큐를 여러 개 사용하는 스케줄링 방식
- 문제점 : 큐 간의 이동이 불가능해 기아현상이 발생할 수 있음
- 다단계 피드백 큐 스케줄링 : 프로세스들이 큐 사이를 이동 할 수 있는 다단계 큐 스케줄링
- 선입 선처리 스케줄링 : 준비 큐에 삽입된 순서대로 CPU를 할당
기본미션 p.304 1번
1번 : 생성
2번 : 준비
3번 : 실행
4번 : 종료
5번 : 대기
선택 미션 준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU 할당받는지 풀어보기
답 : A -> B -> C -> D