[OS] Process

박의진·2023년 7월 4일
0

TABA3기

목록 보기
1/16
post-custom-banner

Process : 실행 중인 program, 순차적으로 진행하는 방식

흔히 말하는 프로그램 실행은 하드 디스크에 있는 프로그램을 메모리에 로드시켜 cpu에서 프로세스로써 실행된다.

프로그램 안에서 몇 개의 프로세스가 실행될 수 있다.

Memory Layout of a C program

Text section

program code

Data section

golbal class, static class
정적으로 실행 되기 전에 지정

Stack section

automatic class
동적으로 실행 중에 지정

Heap section

실행 중 동적으로 할당하는 메모리, stack과 비슷하지만 넣고 빼는 방식이 다름

Process state

  • new - 만들어지고 있는 상태

  • ready - 프로세서에게 할당 되기 기다리는 상태, CPU를 할당하면 실행함.

  • runnig - 실제 CPU를 할당 받아 실행되고 있는 상태

  • waiting - 어떠한 일이 발생되기 기다리는 상태, 자원을 빼앗음.(I/O가 대부분), CPU를 할당 해도 실행 하지 못함.

  • termianted - 실행이 끝난 상태

ex) 은행을 예로 든다. 번호표를 받고(new) 창구에 할당되기 기다린다(ready) 창구가 할당이 되면 업무를 본다(running) 업무를 보는 중 작성해야 하는 서류를 창구에서 나와 따로 작성한다(waiting) 작성을 다한 후 제출 하기 전까지 기다린다(ready).

Process controll block(PCB)

  • 포인터
    프로세스의 현재 위치를 저장하는 포인터 정보

  • 프로세스 상태
    프로세스의 상태 (생성, 준비, 실행, 대기, 종료) 에 대한 정보를 저장

  • 프로세스 식별자
    모든 프로세스에는 각 프로세스를 식별하는 고유한 ID, PID 가 할당

  • 프로그램 계수기
    프로세스가 실행해야 하는 다음 명령어의 주소

  • 레지스터
    누산기, 베이스, 레지스터 및 범용 레지스터를 포함하는 CPU 레지스터에 있는 정보

  • 메모리 제한
    운영 체제에서 사용하는 메모리 관리 시스템에 대한 정보가 포함
    페이지 테이블, 세그먼트 테이블 등이 포함될 수 있음

Process scheduling

CPU switch from process to process

Context switch(문맥 교환)

문맥(context)은 프로세스의 상태 정보를 의미한다.
문맥 교환(context switch)은 프로세스의 상태 정보를 교환하는 작업이다.
하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해 이전의 프로세스의 상태를 PCB에 보관하고 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정이다.

Process creation in UNIX

  • fork() - 새로운 프로세스를 생성
    (i.e., parent : child pid (pid > 0), child : 0 (pid == 0))

  • exec() - 프로세스의 메모리 공간을 새로운 프로그램으로 교체함

  • wait() - 부모 프로세스가 자식 프로세스 종료되기까지 기다림

Example of a Porcess creation in UNIX

Process termination

  • 부모가 종료 된 후 자식이 존재하는 것을 허용하지 않는 OS
    cascading termination.
    the termination is initiated by the operating system

    Zombie process VS Orphan process

  • zombie 프로세스 또는 defected 프로세스는 실행을 완료했지만 여전히 프로세스 테이블에 항목이 있는 프로세스다.
  • 부모가 대기를 호출하지 않고 대신 종료되면 하위 프로세스는 orphan 프로세스(예: 여전히 실행 중)가 된다.

Interprocess communication

  • independent process는 다른 실행 중인 프로세스에게 영향을 끼치면 안된다.

  • cooperating process는 데이터 공유를 포함해 프로세스의 실행에 의해 영향을 받는다.

  • cooperating process는 'Interprocess communication(IPC)'가 필요하다

Communications models

- Shared memory

  • communication이 OS의 제어가 아닌 User process의 제어를 받는다.
  • shared memory 에 대해 User process들의 synchronize(동기화)를 허용한다

Procucer-Consumer problem

생산자-소비자 문제는 생산자가 데이터를 생상하면 소비자는 그것을 소비하는 형태에서 발생하는 문제를 말한다. 일반적으로 생산하는 속도와 소비하는 속도에 차이가 존재한다. 실제로 생산되는 속도가 소비하는 속도보다 빠른 경우가 많아서 생산된 데이터는 바로 소비되지 못한다.

Buffer

위와 같은 문제를 해결하기 위해 생산된 데이터를 보관하는 버퍼라는 공간이 존재한다. 생산자가 데이터를 생산하면 버퍼에 보관을 하게 되고 소비자는 버퍼에서 데이터를 빼내어 사용한다. 하지만 현실 시스템에는 버퍼의 크기가 유한하다. 크기가 정해져 있는 버퍼이기 때문에 Bounded Buffer라고 불린다.

post-custom-banner

0개의 댓글