Single Process System, Multi-programming, Multitasking 이란

ASHAPPYASIKNOW·2022년 11월 13일
0

PROCESS, THREAD

목록 보기
2/5
post-thumbnail

단일 프로세스 시스템 (Single Process System)

  • Process #1이 작업을 시작한다.
  • 작업 도중 I/O 작업을 시작하게 되면 끝날 때까지 기다려야 한다. (CPU가 일을 하지 않고 기다려야 하는 비효율 구간)
  • I/O 작업이 완료되면 Process #1의 작업을 이어서 진행 한다.

Point: I/O 작업 구간을 효율적으로 사용하지 못함


I/O (Input/Output) 작업이란?

애플리케이션에서 시스템의 입력과 출력에 의존하는 경우 I/O 작업이라고 한다. 일반적으로 하드디스크나 랜카드와 같은 주변장치를 사용해야 하는 경우가 이에 해당한다.

애플리케이션에서 하드디스크나 랜카드를 사용하기 위해서는 리눅스 커널에서 제공하는 추상화된 파일(File) 레이어를 사용해야 한다.

웹애플리케이션서버를 만들게 되면 주로 REST API를 호출하거나 데이터베이스(Database)에 읽고 쓰는 작업을 많이 하게 되는데 이 모든 것이 I/O 작업에 해당한다.


멀티프로그래밍 (Multi-programming)

멀티프로그래밍은 프로세스의 I/O 작업 시간에 다른 프로세스의 작업을 가능하게 한다. 그래서 단일 프로세스 시스템보다 더 향상된 성능을 얻을 수 있다.

  • 프로세스1 작업 시작 후 I/O 작업을 만나게 되면 프로세스2 작업을 시작하게 된다.
  • 프로세스2 작업 시작 후 I/O 작업을 만나게 되면 프로세스1 작업을 시작하게 된다.

Point: 프로세스1의 작업이 너무 긴 경우 프로세스2는 프로세스1의 작업이 끝나길 계속 기다려야 한다.


멀티태스킹 (Multitasking)

여러 프로세스가 CPU를 일정한 시간 동안 사용할 수 있게 스케줄링한다 (TDM). 할당된 일정 시간이 지나면 다른 프로세스에 CPU를 사용할 수 있도록 다시 배정하는 작업이 발생하는데 이를 문맥 교환(Context Switching) 이라고 한다. 프로세스 간에 일정 시간의 기회가 계속 오기 때문에 응답시간을 최소화할 수 있다.

Point: 멀티태스킹에서는 응답성을 향상하기 위해서 문맥 교환이 자주 일어나게 된다. 결과적으로 응답성은 좋아졌지만, 문맥 교환이라는 무거운 작업을 자주 실행시켜야 한다.

프로세스의 메모리 구조 및 PCB 블록

프로세스는 독립적으로 할당된 메모리공간과 이에 관련된 관리 블록을 가지고 있다. 문맥 교환이 일어나게 되면 해당 정보를 변경되는 프로세스의 정보로 변경하는 작업이 일어나게 된다.

  • 프로세스 식별자(PID)
  • 프로세스 상태(Process State) : new, ready, running, waiting 또는 terminated 상태가 있다.
  • 프로그램 카운터(Program Counter) : 다음에 실행할 명령어의 주소
  • 레지스터(Register): accumulators, index registers, stack pointers, general purpose registers …
  • 메모리 관리정보(Memory Limits): page tables, segment tables, base register, limit register …

REFERNCES

Guide to the “CPU-bound” and “I/O bound” Terms
Operating System — Linux
Operating System architecture
Computer multitasking
Structure of the Process Control Block

profile
36.9 It's good time to start something new

0개의 댓글