프로세스가 뭘까요..?
Process는 실행 중인 프로그램을 뜻합니다.
프로그램이 실행되면 명령어들과 데이터가 메모리에 적재됩니다.
또 하나 또는 여러개의 Tread로 실행되는 컴퓨터 프로그램의 instance라고 하며
Process는 Program code와 activity를 포함합니다.
프로세스의 상태?
New : 프로세스가 생성되는 도중의 상태
Ready: 프로세스가 생성된 후, 프로세서에 할당되기를 기다리는 상태
Running: instruction이 실행되는 상태 (processor에 할당됨)
Wait: process가 특정 이벤트를 기다리는 상태
Terminated: process 종료 상태
프로세스 메모리
운영체제는 프로세스 마다 고유 가상 메모리공간을 제공합니다.
이 공간은 다시 data section, text section, stack/heap section등 으로 세분화됩니다.
Stack : 매개변수, 지역변수, return 주소 등과 같은 데이터를 저장하는 영역
Heap: new, delete, malloc, free등을 호출하여 데이터를 저장&관리하는 영역
Data section: 사전에 선언된 데이터가 저장되는 영역 ( DATA & BSS 영역으로 구분)
Instruction(Text Section): 컴파일된 기계어가 저장되는 영역 (Compile time에 크기가 결정됨)
PCB?
Process 마다 현재 상태를 하나의 데이터 구조에 저장하여 관리하며 이를 Process Control Block
PCB라고 부릅니다. (Kernel 영역에 저장)
Process State : New, Ready, Wait, Running, Terminated
CPU registers: 프로세스의 레지스터 상태를 저장하는 공간
Program Counter: 프로세스에서 실행되야할 다음 instrction의 주소
CPU Scheduling 정보: CPU Scheduling에 필요한 우선순위 및 scheduling queues의 pointer
Memory 관리 정보: 프로세스 내부에서 사용되는 메모리주소를 실제 물리적 메모리 주소로
변환하는 필요한 테이블 데이터
Acounting 정보: process를 실행한 user의 정보
I/O 상태 정보: process에 할당된 물리적 장치 및 프로세스가 읽고 있는 파일에 관한 정보
--자료--
문맥교환?
문맥교환은 현재 CPU를 사용중인 프로세스의 CPU 제어권이 다른 프로세스로 이양되는 과정을 말합니다.
현재 프로세스 AA가 CPU를 사용하는 상황에 CPU사용시간이 끝나 다음 프로세스에게 CPU를 넘겨주면
스케줄링 알로리즘에 의해 다음 CPU를 받을 프로세스 BB가 선택되고 타이머 인터럽트가 발생해 CPU의
제어권을 운영체제에 념겨지게 됩니다.
또한 프로세스가 봉쇄 상태인 경우에도 문맥교환이 발생합니다.
프로세스가 CPU를 사용하다 I/O작업을 하게 되는 경우 CPU를 사용하지 않게 되며 이런경우
CPU가 낭비가 되기 때문에 다른 프로세스에게 CPU를 이양합니다.
--자료--
[운영체제] 문맥교환(Context Switching) — 박연호의 개발 블로그 (tistory.com)
[운영체제] 문맥교환(Context Switching)
문맥교환 컴퓨터에는 여러 프로세스들이 실행되고 있습니다. 카카오톡을 켜놓고 유튜브로 노래를 들으면서 웹서핑을 하는 것은 사용자 입장에서 동시에 일어나는 일 처럼 보이지만 실제로는
kosaf04pyh.tistory.com
스레드?
스레드(thread)란 프로세스(process)내에서 실제로 작업을 수행하는 주체를 의미합니다.
모든 프로세스에는 한 개 이상의 스레드가 존재하며 두 개 이상의 스레드를 가지는 프로세스를
멀티 프로세스 (multi-threaded process)라고 합니다.
또한 스레드는 프로세스 내부에 있는 CPU 수행 단위라고도 하며
프로세스와 스레드의 차이점에서 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이며
스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이고 프로세스 내에 여러개 생길 수 있습니다.
장점 : 응답성 , 자원 공유, 병렬성, 커널의 도움없이 상호간에 통신이 가능
주의점 : 각 스레드가 Stack을 제외한 메모리 공간을 공부하기 때문에 동기화 문제가 발생할 수 있습니다.
하나의 스레드에 문제가 발생하면 프로세스 전체가 영향을 받습니다.
--자료--