반효경 교수님의 2014년 및 2017년 강의를 듣고 이를 정리한 문서입니다.
프로세스 문맥이 필요한 이유?
프로세스는 CPU 수행상태를 나타내는 하드웨어 문맥입니다.
글을 읽을 때, 문맥을 파악해야 지금 글의 현재 상태 인지에 대해 아는 것처럼 프로세스도 현재 변수의 값, 어떤 상태까지 진행을 했는가를 저장해두고 읽는 방법을 통해 문맥을 알 수 있습니다.
프로세스가 시작해서 끝날 때까지 CPU에서 한꺼번에 수행하면 문맥을 읽을 필요는 없습니다.
하지만 현재 컴퓨터는 CPU의 개수는 한정되어 있고, 많은 업무를 동시에 처리한 것처럼 보여주고자 합니다.
이를 위해 여러 프로세스가 함께 수행되는 시분할 환경에서는 CPU를
자주 빼앗기고 획득하게 됩니다.
따라서 CPU를 다시 획득해 명령의 수행을 재개하는 시점이 되면, 이전 CPU 보유 시기에 어느 부분까지 명령을 수행했는지 정확한 상태를 재현할 필요가 있습니다. 이때 프로세스의 정확한 재현을 위해 필요한 정보가 바로 프로세스 문맥입니다.
프로세스의 구조란?
프로세스의 저장공간(주소 공간)은 Code, Data, Stack으로 구성됩니다.
그리고 프로세스 관련 커널 자료 구조는 PCB, Kernel Stack으로 구성됩니다.
키워드 설명
Stack은 공유 자원으로 누가 호출했는지에 따라 프로세스 별로 별도로 관리합니다.
PCB는 운영체제가 각 프로세스를 관리하기 위해 프로세스 당 유지하는 정보입니다.
1) OS가 관리상 사용하는 정보
- Process State(Process 상태), Process ID(id)
- Scheduling Info, Priority
2) CPU 수행 관련 하드웨어 값
- Program Counter(메모리의 어떤 부분을 가리키고 있는지를 알려줍니다.), registers
3) 메모리
- Code, Data, Stack의 위치 정보
4) 파일 관련
- Open File Descriptors
Kernel Stack은 시스템 콜을 하면 PC가 커널의 Code를 가리키며 수행되고, 호출 정보를 커널 스택에 프로세스 별로 스택을 두어서 저장해둡니다.
그림 설명
- Running : CPU를 잡고 instruction 수행중인 상태
- Ready : CPU를 기다리는 상태(memory 등 다른 조건 모두 만족한 상태)
- Blocked(wait, sleep) : CPU를 줘도 instruction을 수행할 수 없는 상태 (요청한 event가 만족되면 ready)
- Process 자신이 요청한 event가 즉시 만족되지 않아 기다리는 상태
- ex) disk에서 file을 읽어야하는 상태 등
- Suspend : 스케줄링을 위해 사용하는 영역( 외부에서 resume해줘야 active )
- 외부적인 이유로 프로세스의 수행이 정지된 상태
- 프로세스는 통째로 디스크에 swap out된다.
- new : 프로세스가 생성중인 상태
- terminated : 수행이 끝난 상태
프로세스 생성부터 종료까지 순서대로 만들어 보겠습니다.
첫 째, 프로세스가 생성되면 new 상태에서 ready 상태가 됩니다.(admitted)
둘 째, ready 상태에서 CPU를 얻으면 running 상태가 됩니다.
셋 째, CPU를 얻은 상태에서 종료될 때까지
- running → terminated
- 본인의 역할을 다하면 종료됩니다.
- running → waiting
- I/O 같은 오래 걸리는 작업을 하면, CPU를 가지고 있어 봐야 명령을 수행할 수 없으므로 waiting 상태가 됩니다.
- running → ready
- 할당된 CPU 사용 시간이 끝나면 ready 상태가 됩니다.
와 같은 상태를 반복하다가 종료됩니다.
참고 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=sheep_horse&logNo=221271778167
'CS > 운영체제' 카테고리의 다른 글
멀티 프로세스와 멀티 스레드 (0) | 2024.01.09 |
---|---|
운영체제 스케줄링(정처기) (0) | 2023.07.05 |
운영체제 개념(정처기) (0) | 2023.07.03 |
객체지향이란? (0) | 2023.06.25 |