운영체제-Operating System Concepts-3-Process란?

taehee kim·2021년 5월 28일
0

1.프로세스란

프로세스란 실행중인 프로그램이다(메인 메모리에 프로그램이 있는 상태). PID라는 고유한 번호를 부여받고 상태가 존재하며 프로세스를 실행한 주체user가 될 수도 있고 system이 될 수도 있다. 프로세스는 항상 자원을 운영체제로 부터 할당 받아 작동한다.

2.프로세스에 할당된 메모리구조

  • Text section:
    : executable code
  • Data section:
    : global variables
    : static variables
  • Heap section:
    : memory that is dynamically allocated during
    program run time (malloc)
  • Stack section:
    : 함수가 호출되었을 때 할당되는 메모리 영역으로
    function parameters, return addresses, local variables등이 저장된다.


    Text segment가 0주소(실제가 아니라 논리적)부터 시작하여 data segment, heap segment, stack segment로 주소값이 커진다. heap과 stack은 메모리공간을 공유하며 stack의 주소는 큰 주소부터 시작한다. heap과 stack의 공간을 너무 많이 할당하는 경우 overflow가 발생할 수 있는데 이 경우를 각각 stack overflow, heap overflow라고 한다.

또한 data segment는 초기화된 것과 초기화되지않은 영역으로 나뉘어져 있다.


cf)함수가 호출되면 일어나는 일

call stack

함수가 호출되면
function parameters를 push하고, pc의 값을 stack에 return address로 push한다. 그 위치의 stack pointer는 callee가 caller위치로 돌아가기위해 return address가 위치한 곳이므로 여기의 주소를 frame pointer에 저장한다. 즉 frame pointer는 함수가 return 할때의 위치를 저장해놓은 stack의 위치이다.stack pointer는 local variable까지 저장하고 그 바로 위를 가리키게 된다. stack frame은 parameter부터 local variable까지 callee에게 할당된 stack의 메모리 공간을 의미한다.


프로세스 관리자는

  • 프로세스 생성 및 삭제
  • 스케쥴링
  • 상태 관리(실행 여부)

3.프로세스의 상태

  • 생성(new)
    프로그램 상태에 있던 것이 메인메모리에 올라와 프로세스가 됨.
    어떤 작업에 대해 요청을 인지하고 어떤 자원이 필요한지 파악함. 그러다가 가용 자원들이 확보
    되었음을 확인하면 준비단계로 넘어감.
  • 준비(ready)
    실행 준비가 되었고 cpu할당만을 기다리는 상황. 즉 cpu를 제외한 나머지 자원은 할당받은 상태.
  • 실행(running)
    프로세스가 cpu할당을 받아 실행되는 상태.
  • 대기(waiting)
    i/o 작업이 필요하거나(cpu사용하지 않는 상황), 특정 자원이 더 필요할때 할당 받기전까지 대기하는 상태.
  • 종료(terminated)
    모든 처리가 완료후 return 하면 되는 상태.

4.프로세스 상태 전이도


1. fork()사용하면 프로그램이 new상태의 프로세스가 됨.
2. new에서 cpu를 제외한 모든 자원이 준비된것이 확인 되면 ready상태 되고 Ready Q로 들어감.
3. cpu-scheduling에 의해서 cpu 할당 받으면 running상태 됨. ready Q에 있던 ready상태의 프로세스를 running상태로 scheduler가 dispatch함.
cf) scheduler dispatcher
dispatcher란 프로세스가 전환될 때 PCB를 해당 프로세스의 PCB로 전환 시켜 주고 register, pc, mmu등의 내용을 바뀐 프로세스로 전환 시켜 주는 os내의프로그램이다.
4. i/o 사용이 필요한 경우 running상태에서 waiting로 상태가 전환되고 i/o 사용이 끝나면 다시 ready 상태가 되어 Q에 들어감.
5. exit()하거나 main 함수 return ,kill명령어 사용시 프로세스가 terminated됨.

5.PCB(Process Control Block)

:해당 프로세스의 정보를 담고있는 block

  • Process state
  • Program counter
  • CPU registers (IR, Data Register)
  • Memory-management information(mmu(base, limit))
  • Accounting information-권한
  • I/O status information-어떤 file오픈 했는지

    다른 프로세서를 실행하는 context switching을 하고 싶을때, 해당 pcb에 있는 정보로 바꿔주기만 하면 다른 process가 실행된다. 이것을 응용하면 multithreading도 같은 방식으로 multiprocessing과 유사한 방식으로 동작하게 만들 수 있다.

6. Multiprogramming

:여러개의 프로그램을 메모리에 올려 놓고 하나의 cpu를 사용하여 cpu utilization을 maximum으로 하여 여러 프로세스를 동작시키는 것이 목표.
메모리에 여러 프로세스를 올리고 효율적으로 cpu를 할당하기 위한 scheduling이 필요해짐.

time sharing(multitasking)
:프로세스에 cpu를 점유할 수 있는 특정 시간 간격을 두고 그 시간이 넘으면 time-expire로 다른 프로세스로 context switching 시킴. 여러 사용자가 동시에 사용하여도 계속해서 context switching이 일어나므로 concurrent 하다고 느낌. multiprogramming을 위한 scheduling중 하나의 방법으로 사용 될 수 있음.
cf)multiprocessing
:위의 경우와 가장 큰 차이점은 cpu에 여러 프로세서가 존재하여 각각 register를 가지고 있는 것을 말한다.

7. Process Scheduling

:Ready Q의 process들을 어떻게 scheduling하고 dispatch하여 처리할지 결정하는것. Ready Q에 링크드리스트 형태로 PCB들이 저장되어있다.
마찬가지로 wait상태에는 waiting Q가 존재하여 i/o를 할당을 기다리고 있다.

  • Ready Q, wait Q
  • Queueing Diagram

    :running상태에서 i/o 요청을 받으면 wait Q로 가고 time expire하면 ready Q로 가고 fork()하여 자식 프로세스를 만들면 자식 프로세스가 new->ready Q로가고 원래 프로세스는 wait 하고 interrupt의 경우에도 i/o와 유사하게 wait 하다가 끝나면 ready Q에 들어간다.

8. Context switch

:Context란 프로세스의 정보를 의미하고 이것은 PCB에 저장 되어있다. Context switch란 cpu에 다른 프로세스를 할당하는 것을 말하고 이것은 현재 pcb를 저장하고 새로운 cpu를 할당받을 프로세스의 pcb를 복원하여 실행하는 것을 말한다.

profile
Fail Fast

0개의 댓글