프로세스 

실행중인 프로그램 

디스크로부터 메모리에 적재되어 CPU 할당을 받을 수 있는 것

OS로부터 주소공간, 파일, 메모리 등을 할당받음

 

  • 프로세스 스택 : 임시자료 (함수 매개변수, 복귀주소, 로컬변수)
  • 데이터 섹션 : 전역변수
  • 힙(heap) : 프로세스실행 중에 동적 할당되는 메모리

 

PCB

프로세스 제어 블록

특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조

OS는 프로세스 관리를 위해 프로세스 생성 시 동시에 고유 PCB를 생성함

CPU 할당받은 프로세스가 작업 처리 중에 프로세스 전환이 발생하면 진행작업을 PCB에 저장 후 CPU를 반환함

> 다시 CPU 할당 받으면 이전에 종료된 시점부터 작업 수행 가능

 

PCB 에 저장되는 정보

  • 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
  • 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장
  • 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소
  • CPU 레지스터
  • CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
  • 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
  • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
  • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등

 

 


스레드

프로세스의 실행단위 (흐름)

한 프로세스 내에서 동작하는 여러 흐름으로 프로세스 내의 공간/자원 공유가능

구성 : 스레드 ID, 레지스터 집합, 독립된 PC(program counter), 독립된 스택 (메모리공간)

같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 열린파일, 신호 등 OS 자원을 공유함

 

 

멀티 스레드

하나의 프로세스를 다수의 실행단위로 구분하여 자원을 공유 (하나의 프로그램에서 병렬 처리)

자원의 생성, 관리의 중복을 최소화하여 수행능력 향상 (메모리 공간, 시스템 자원소모 감소)

스레드 간의 통신 = 자원 이용 없이 전역변수의 공간/ 동적할당 공간(heap) 에서 통신가능

 

주의 : 동기화작업 필요 > 스레드 간 접근 가능하므로 엉뚱한 값 읽기/수정 가능 > 동기화로 작업처리 순서, 공유자원 접근 제어 > 과도한 동기화는 락발생 > 병목현상 주의

 

 

싱글스레드 프로세스와 다중스레드 프로세스


 

 

멀티 스레드 : 하나의 프로그램 병렬 처리. 적은 메모리공간 사용, 문맥전환 빠름, 오류로 하나의 스레드 종료 시 전체 스레드 종료 가능, 동기화 문제(병목현상) 

RPC 서버 (Remote Procedure Call 원격 프로시저 호출) : 서버가 메시지 수신 시 서비스를 위한 새로운 스레드 생성, 여러 요청을 병렬로 처리

 

멀티 프로세스 : fork(), 여러 프로그램 병렬 처리. 하나의 프로세스 종료 시 다른 프로세스에 영향없음, 많은 메모리공간, 많은 CPU시간 소요

 

 

멀티 태스킹 : OS에서 지원, TASK 번갈아 수행. 독립된 자원사용, 공유 X

 

멀티 프로그래밍 : 프로세서의 I/O작업 종료대기 중에 하나의 프로세서에서 다른 프로그램을 수행 (자원낭비 방지)

 

>>> 대상 시스템 특징에 따라 적합한 동작방식 선택/적용해야 함 

 


Reference

 

JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

 

 

[운영체제] 4장 다중 스레드 프로그래밍(Multithreaded Programming)

4.1 개요(Overview) ▶ 스레드(threads) : CPU의 기본 단위, 스레드 ID, 프로그램 카운터, 레지스터 ...

blog.naver.com

 

 

[OS] 멀티프로세싱, 멀티프로그래밍, 멀티태스킹, 멀티스레딩

멀티 프로세싱은 다수의 프로세서가 서로 협력적으로 일을 처리하는 것을 의미한다. 컴퓨터는 1대인데 프로세서(CPU)는 2개 이상이다. 보통, 멀티코어시스템(multi-core system)을 포함한다.초기의 컴

velog.io

 

반응형

+ Recent posts