일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 포스코
- 카카오
- leetcode
- 정렬
- 등촌동속눈썹펌
- 마곡속눈썹펌
- 직무면접
- 등촌동속눈썹연장
- 수학
- 삼성
- 추석트래픽
- 투포인터
- 알고리즘
- 딥러닝
- 백준
- level2
- Java
- ai/bigdata
- 삼성SW역량테스트
- OS
- 코딩테스트
- 프로그래머스
- 시뮬레이션
- 운영체제
- BOJ
- 다시보기
- 마곡속눈썹연장
- 리트코드
- 삼성 SW역량테스트 기출
- 1차면접
- Today
- Total
기록하는 습관을 들이자
[ 운영체제 정리 ] 5장 프로세스 관리 - 운영체제와 정보기술의 원리 본문
※ 해당 포스팅은 이화여대 반효경 교수님 저서 [운영체제와 정보기술의 원리] 책 내용을 기반으로 작성되었습니다.
1. 프로세스의 개념
프로세스란 실행 중인 프로그램을 뜻한다. (program in execution)
프로세스가 시작해서 종료할 때까지 CPU에서 명령을 한꺼번에 수행하면 좋겠지만, 현대의 운영체제는 여러 프로세스가 함께 수행되는 시분할 시스템이다. 따라서 타이머 인터럽트에 의해 짧은 시간 동안 CPU를 사용한 후 빼앗기는 상황이 반복되기에 이전에 어느 명령까지 수행했는지 정확한 상태를 재현할 필요가 있다. -> 이 때 필요한 정보가 바로 프로세스의 문맥(context)!
보통 프로세스의 문맥(context)는 커널의 PCB에 저장된다.
2. 프로세스의 상태
프로세스의 상태는 실행(running), 준비(ready), 봉쇄(blocked) 세 가지로 구분될 수 있다.
context switch란? 실행시킬 프로세스를 변경하기 위해 원래 수행 중이던 프로세스의 문맥을 저장하고 새로운 프로세스의 문맥을 세팅하는 과정을 의미한다.
3. 프로세스 제어블록
프로세스 제어블록(PCB)는 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조이다. PCB는 다음과 같은 요소들로 구성된다.
- 프로세스의 상태(state)
- 프로그램 카운터 값
- CPU 레지스터 값
- 자원 사용 정보 등
4. 문맥교환
문맥교환(context switch)이란 하나의 사용자 프로세스로부터 다른 사용자 프로세스로 CPU 제어권이 이양되는 과정을 뜻한다. 이 때 주의할 점이 있다!
문맥교환이라함은 프로세스가 다른 사용자 프로세스로 변경이 되어야 문맥교환이라고 일컬어질 수 있다.
타이머 인터럽트가 발생하거나 프로세스가 입출력 요청 시스템 콜을 하여 봉쇄 상태에 들어가는 경우에는 문맥교환이 일어난다고 보지만, 그 밖의 하드웨어 인터럽트나 시스템 콜 발생 시에는 문맥교환이 일어나지 않고 실행 모드만 변경될 뿐이다.
문맥교환에 소요되는 시간은 일종의 오버헤드(overhead)라고 볼 수 있다. 따라서, CPU 할당시간을 너무 짧게 세팅하면 프로세스 간 문맥교환이 너무 빈번하게 발생하여 오버헤드가 커지고, 또 할당시간을 너무 크게하면 시분할 시스템의 의미가 퇴색되므로 CPU 할당시간을 적절하게 정하는 것이 무엇보다 중요하다.
5. 프로세스를 스케줄링하기 위한 큐
CPU를 할당받기를 기다리는 프로세스를 줄 세우는 ready queue 외에 운영체제는 특정 자원을 기다리는 프로세스들을 줄 세우기 위해 자원별로 장치 큐(device queue)를 둔다.
6. 스케줄러
스케줄러(scheduler)란 어떤 프로세스에게 자원을 할당할지 결정하는 운영체제 커널의 코드를 지칭한다.
- 장기 스케줄러: 어떤 프로세스에게 메모리를 할당할까를 결정하는 스케줄러 -> 현대 시분할 시스템 운영체제에서는 프로세스가 시작 상태가 되면 장기 스케줄러 없이 곧바로 메모리로 올라가기 때문에 장기 스케줄러가 이용되지 않는다. 대신 중기 스케줄러를 두는 경우가 많다.
- 단기 스케줄러: 어떤 프로세스에게 CPU를 할당할까를 결정하는 스케줄러, CPU 스케줄러라고도 부른다. 단기 스케줄러는 밀리초 단위로 매우 빈번하게 호출되기 때문에 수행 속도가 빨라야 한다.
- 중기 스케줄러: 너무 많은 프로세스에게 메모리를 할당해 시스템의 성능이 저하 되는 경우 메모리에 적재된 프로세스의 수를 조절하기 위해 추가된 스케줄러. 메모리에 올라와 있는 프로세스 중 일부를 선정해 이들로부터 메모리를 통째로 빼앗아 그 내용을 디스크의 스왑 영역에 저장해둔다.
중기 스케줄러의 등장으로 프로세스 상태에는 실행, 준비, 봉쇄 외에 중지(suspended) 상태가 추가된다. 외부적인 이유로 프로세스의 수행이 정지된 경우를 의미한다.
7. 프로세스의 생성
시스템이 부팅된 후 최초의 프로세스는 운영체제가 직접 생성하지만 그다음부터는 이미 존재하는 프로세스가 다른 프로세스를 복제 생성하게 된다. 이 때 프로세스를 생성한 프로세스를 부모 프로세스, 생성된 프로세스를 자식 프로세스라고 한다.
- 유닉스
유닉스에서는 fork() 시스템 콜을 통해 새로운 프로세스 생성이 가능하다. fork() 시스템 콜은 자식 프로세스를 생성할 때 부모 프로세스의 내용을 그대로 복제 생성하게 된다. 즉 프로세스 ID를 제외한 모든 정보를 그대로 복사하는 방법을 사용한다. fork()를 통해 생성된 자식 프로세스는 exec() 시스템 콜을 통해 새로운 프로그램으로 주소 공간을 덮어씌울 수 있다.
프로세스는 명령을 모두 수행한 후, 프로그램이 마쳐지는 코드 부분에 exit()라는 시스템 콜을 넣어주게 되어 있다. 즉, 운영체제에게 시스템 콜을 통해 프로세스가 종료됨을 알린 후 운영체제가 프로세스로부터 자원을 회수하고 정리할 수 있게 해주는 것이다.
8. 프로세스 간의 협력
프로세스는 각자 자신만의 독립적인 주소 공간을 가지고 수행되기에 한 프로세스가 다른 프로세스의 주소 공간을 참조하는 것은 허용되지 않는다. 그런데 경우에 따라서는 독립적인 프로세스들이 협력할 때 업무의 효율성이 증진되는 경우가 있다.
프로세스 간의 협력 메커니즘을 위해 운영체제가 제공하는 메커니즘으로 IPC(inter-process communication)가 있다. IPC는 프로세스 간의 통신과 동기화를 이루기 위한 메커니즘을 의미한다. IPC의 대표적인 방법으로는 메시지 전달(message passing) 방식과 공유메모리(shared memory) 방식이 있다. 이 두 방식의 차이는 공유 메모리를 사용하는가, 그렇지 않는가 이다.
1. 메시지 전달 방식(message passing)
메시지 전달 방식은 공유 데이터를 일체 사용하지 않고 메시지를 주고받으면서 통신하는 방식이다. 이 때 커널에 의해 send와 receive라는 두 가지 연산을 제공받게 된다. 메시지를 프로세스끼리 직접 주고받을 수 있다면 원하지 않는 메시지 전달로 인해 시스템에 악영향을 끼칠 수 있으므로 특권 명령으로 지정해 운영체제의 도움을 받아 메시지를 교환할 수 있도록 구성되어 있다.
따라서, 프로세스 A가 커널에게 send 시스템 콜을 이용해 커널에게 메시지를 전달하면, 프로세스 B는 커널로부터 receive 시스템 콜을 이용해 메시지를 전달받는 방식이다.
2. 공유메모리 방식(shared memory)
프로세스들이 주소 공간의 일부를 공유한다. (-> 각 프로세스가 독립적인 주소 공간을 가지는 데 어떻게?? 각 프로세스가 독립적인 가상 메모리 주소 공간을 가지지만 공유메모리에 해당하는 부분은 물리적 메모리에 매핑될 때 동일한 물리적 메모리 주소로 매핑되게 하면 된다) 이 때 주의해야할 점은 공유메모리 접근에 대한 동기화 문제이다. 일관성 유지를 위해 한 번에 한 프로세스만이 해당 메모리에 접근가능하도록 해야한다.
'운영체제' 카테고리의 다른 글
[ 운영체제 정리 ] 7장 메모리 관리 - 운영체제와 정보기술의 원리 (0) | 2020.09.04 |
---|---|
[ 운영체제 정리 ] 6장 CPU 스케줄링 - 운영체제와 정보기술의 원리 (0) | 2020.09.04 |
[ 운영체제 정리 ] 4장 프로그램의 구조와 실행 - 운영체제와 정보기술의 원리 (0) | 2020.09.04 |
[ 운영체제 정리 ] 3장 컴퓨터 시스템의 동작 원리 - 운영체제와 정보기술의 원리 (0) | 2020.09.03 |
[ 운영체제 정리 ] 2장 운영체제 개요 - 운영체제와 정보기술의 원리 (0) | 2020.09.03 |