운영체제

운영체제 process

cheesecrust1008 2023. 3. 11. 13:59

우리가 사용하는 cpu는 제한적인데, 프로세스를 여러개 실행 시킬 필요들이 존재한다. 

 

따라서 cpu 가상화를 통해서 프로세스를 여러개를 실행시키고, 프로세스 하나가 자신이 cpu 하나를 독점하는것처럼 착각하게 만든다. 

 

그 방법으로는 time sharing을 통해서 하나 실행할때 하나는 쉬는 형식ㅇ로 번갈아 가면서 실행하는 방식이다. 

 

우선 프로세스란 os에서 프로그램을 실행 시킬때의 추상적인 개념이다. 

 

프로세스의 추출을 다루기 위해서는 기계적인 측면을 먼저 알아보아야 한다.

 

프로그램의 중요한 파트는 무엇일까??

 

우선 메모리는 분명하다. 명령어 들이 메모리에 쓰여 있기 때문이다. 또한 레지스터도 포함된다. cpu에서 연산을 할 때에 필요로 하기 때문이다. 

 

그리고 레지스터에는 특별한 레지스터 가 있다. 

예를 들어 pc(program counter) 와 sp(stack pointer) 이 있다. 

 

pc는 다음에 실행 할  명령을 알려주고, sp의 경우에는 stack에 파라미터를 할당한다. 

 

프로세스 api

 

1. create

2. destroy

3. wait

4. miscellaneous control

5. status 

 

프로세스 생성 과정

 

1. disk에서 코드와 정적 데이터를 가져와서 메모리에 저장한다. 

 

2. 그 후 run-time stack(stack)에 몇몇 메모리를 할당한다. 이곳에는 지역변수 등을 할당한다.

 

3. heap에도 할당한다. 

 

4. 또 다른 작업도 하는데 I/O 관련 초기화를 진행한다. 예를 들어 unix에서는 input, output, error 가 일반적인 file description 이다. 

 

모든게 마무리가 되면, code, data 가져오고, stack 생선한 후에 heap도 생성하고, I/O setup 도 마치면 main을 실행한다. 

 

process state 

 

1. running - cpu 에서 실행되는 상태

 

2. ready - 준비가 되었지만, cpu가 없어서 기다리는 상태

 

3. block - 다른 동작을 하고 있어서 현재 프로세스를 시행하지 못하는 상태 이때는 주로 syscall에 의해 발생하는데 이때 발생하는 작업은 커널에서 처리한다. 

 

block 이 발생하는 경우는 주로 I/O 처리가 발생하는 경우인데, I/O 처리가 끝날 때 까지 해당 프로세스는 block 처리가 되고, 처리가 끝나면 ready 상태가 된다. 

 

register context - 프로세스가 실행될 때의 register 값들의 상태를 의미한다.

 

pcb - 운영체제가 프로세스를 관리 할 때에 사용하는 자료구조이다. 프로세스의 상태 정보, 레지스터 값 프로세스 id 등을 저장한다. 

 

pcb의 값은 프로세스가 시작할 때, 프로세스가 중지 될때, 프로세스 시간이 만료되었을 때, 프로세스가 완료 될 때에 저장 된다. 

 

그런데 이 pcb는 해앋 프로세스가 종료되면 사라진다. 

 

 

'운영체제' 카테고리의 다른 글

운영체제 MLFQ  (0) 2023.03.11
운영체제 schedule intro  (0) 2023.03.11
운영체제 LDE  (0) 2023.03.11
운영체제 process api  (0) 2023.03.11
운영체제 Intro  (0) 2023.03.05