Foundation/Computer Science

[CS] 안드로이드 면접 질문 대비. 운영체제 프로세스.

개발왕 금골드 2022. 3. 10. 19:55
반응형

안녕하세요 골드입니다. 

오늘은 프로세스에 대해서 글을 쓰도록 하겠습니다.

 

프로그램과 프로세스

프로그램 : 저장장치에 저장되어 있는 정적인 상태

프로세스 : 실행을 위해 메모리에 올라온 동적인 상태

 

프로그램 -> 프로세스 전환

  • 바탕화면에 프로그램들이 즐비해 있고 우리는 마우스 클릭이나 손가락을 터치해서 해당 프로그램을 실행시킨다. 프로그램에서 프로세스로 전환되는 순간이라고 할 수 있겠다. 
  • 프로그램에서 프로세스로 전환된다는 것은 프로그램이 운영체제로부터 프로세스 제어 블록(PCB)를 받고 메모리 위에 올라간다는 말이다.

 

프로세스 제어 블록 (Process Control Block)

프로세스를 처리할 때 필요한 다양한 정보들을 갖고 있는 데이터 구조. 운영체제 영역에 저장되어 운영체제가 관리한다. PCB는 이런 것들을 포함하고 있다.

  • 프로세스 식별자 ID : 메모리에 존재하는 여러 개의 프로세스를 구분하기 위한 ID
  • 메모리 관련 정보 : 프로세스가 담겨 있는 메모리 위치 정보
  • 중간값 (프로그램 카운터) : 프로세스가 어디서 혹은 어디까지 실행되었는지 사용되었던 중간값을 저장한다. 중간값을 저장하는 이유는 다중 프로세스 환경에서 해당 A 프로세스를 실행 중 잠시 멈추고 B 프로세스를 실행하다가 종료하고 다시 A 프로세스로 돌아왔을 때, 해당 위치를 기억해야 하기 때문이다.

 

출처 : 쉽게 배우는 운영체제. 조성호 지음. 한빛아카데미.

 

이러한 것들을 운영체제에서 관리하지만 운영체제 역시 하나의 프로세스이다. 컴퓨터의 전원을 켰을 때, 부트스트랩에서 운영체제 관련 프로세스를 실행한 후 일반 프로세스가 실행된다.

 

프로세스의 상태

 

  • 생성 상태 : 프로그램이 메모리에 올라오고 프로세스 제어 블록을 할당받은 상태
  • 준비 상태 : 실행 대기 중인 프로세스가 자신의 차례를 기다리는 상태
  • 실행 상태 : 프로세스가 CPU를 할당받아 실행되는 상태. 준비 상태에 있는 프로세스가 CPU 개수만큼 실행될 수 있다.
  • 대기 상태 : 프로세스가 입출력을 요청하면 대기 상태가 된다. 입출력이 완료되면 인터럽트를 발생시켜 여러 프로세스 중 해당 인터럽트로 깨울 프로세스를 찾는다. (wakeup(PID))
  • 완료 상태 : 프로세스가 종료되는 상태이다. 정상적인 종료라면 exit()이 호출된다.

 

Context Switching

Context Switching이란, 프로세스를 교환하는 작업. 혹은, 프로세스 제어 블록을 교환하는 작업을 말한다. 발생하는 이유는 다양한데, 주어진 시간을 다 사용했다거나, 인터럽트가 걸렸을 때 발생한다.

 

출처 : 쉽게 배우는 운영체제

 

감사합니다.

 

 

참고자료 : 쉽게 배우는 운영체제. 조성호 지음. 한빛아카데미.

반응형