반응형
안녕하세요 골드입니다.
오늘은 프로세스에 대해서 글을 쓰도록 하겠습니다.
프로그램과 프로세스
프로그램 : 저장장치에 저장되어 있는 정적인 상태
프로세스 : 실행을 위해 메모리에 올라온 동적인 상태
프로그램 -> 프로세스 전환
- 바탕화면에 프로그램들이 즐비해 있고 우리는 마우스 클릭이나 손가락을 터치해서 해당 프로그램을 실행시킨다. 프로그램에서 프로세스로 전환되는 순간이라고 할 수 있겠다.
- 프로그램에서 프로세스로 전환된다는 것은 프로그램이 운영체제로부터 프로세스 제어 블록(PCB)를 받고 메모리 위에 올라간다는 말이다.
프로세스 제어 블록 (Process Control Block)
프로세스를 처리할 때 필요한 다양한 정보들을 갖고 있는 데이터 구조. 운영체제 영역에 저장되어 운영체제가 관리한다. PCB는 이런 것들을 포함하고 있다.
- 프로세스 식별자 ID : 메모리에 존재하는 여러 개의 프로세스를 구분하기 위한 ID
- 메모리 관련 정보 : 프로세스가 담겨 있는 메모리 위치 정보
- 중간값 (프로그램 카운터) : 프로세스가 어디서 혹은 어디까지 실행되었는지 사용되었던 중간값을 저장한다. 중간값을 저장하는 이유는 다중 프로세스 환경에서 해당 A 프로세스를 실행 중 잠시 멈추고 B 프로세스를 실행하다가 종료하고 다시 A 프로세스로 돌아왔을 때, 해당 위치를 기억해야 하기 때문이다.
이러한 것들을 운영체제에서 관리하지만 운영체제 역시 하나의 프로세스이다. 컴퓨터의 전원을 켰을 때, 부트스트랩에서 운영체제 관련 프로세스를 실행한 후 일반 프로세스가 실행된다.
프로세스의 상태
- 생성 상태 : 프로그램이 메모리에 올라오고 프로세스 제어 블록을 할당받은 상태
- 준비 상태 : 실행 대기 중인 프로세스가 자신의 차례를 기다리는 상태
- 실행 상태 : 프로세스가 CPU를 할당받아 실행되는 상태. 준비 상태에 있는 프로세스가 CPU 개수만큼 실행될 수 있다.
- 대기 상태 : 프로세스가 입출력을 요청하면 대기 상태가 된다. 입출력이 완료되면 인터럽트를 발생시켜 여러 프로세스 중 해당 인터럽트로 깨울 프로세스를 찾는다. (wakeup(PID))
- 완료 상태 : 프로세스가 종료되는 상태이다. 정상적인 종료라면 exit()이 호출된다.
Context Switching
Context Switching이란, 프로세스를 교환하는 작업. 혹은, 프로세스 제어 블록을 교환하는 작업을 말한다. 발생하는 이유는 다양한데, 주어진 시간을 다 사용했다거나, 인터럽트가 걸렸을 때 발생한다.
감사합니다.
참고자료 : 쉽게 배우는 운영체제. 조성호 지음. 한빛아카데미.
반응형
'Foundation > Computer Science' 카테고리의 다른 글
[CS] 안드로이드 면접 질문 대비. Network OSI Model. (0) | 2022.02.13 |
---|---|
[CS] Java에서 Call By Value와 Call By Reference (0) | 2021.04.06 |