본문 바로가기
컴퓨터과학/OS

[OS] 프로세스(1)

by lewns2 2021. 4. 12.

프로세스는 메모리에 적재돼 실행되는 프로그램을 뜻한다.

 * 프로그램은 하드 디스크에 저장돼 있는데, 실행 시 운영체제 로더에 의해 메모리로 적재된다.

 

Q. 프로세스와 프로그램의 차이? 
A. 프로그램은 실행되기를 기다리는 명령어(코드)와 정적 데이터의 묶음입니다.
   이러한 프로그램의 명령어와 정적 데이터가 메모리에 적재되면 프로세스가 됩니다.

 

컴퓨터 하드웨어인 CPU는 한 순간에 오직 1개의 프로세스만을 수행 가능하다.

다만, 운영체제의 멀티태스킹과 스케줄링 기법으로 인해 다수의 프로세스가 동시에 실행되는 것처럼 보일 뿐이다.

 

프로세스 레이아웃 : 프로세스가 메모리에 로드됐을 때의 레이아웃

또, 멀티태스킹 운영체제에서는 하나의 프로세스가 독점적으로 시스템 자원을 사용하는 것을 막기 위해 프로세스에 자원 사용 시간을 적절히 배분한다.

 

  • Stack : 함수 호출 시(지역 변수), 아래로 차면서 데이터가 저장
  • Heap : 동적 메모리 요청 시(malloc), 위로 차면서 데이터가 저장
  • Data Section : 전역 변수, stactic 변수를 저장
  • Text Section : 바이너리 프로그램 코드가 저장

프로세스 컨텍스트(Process Context)

 

운영체제가 관리하는 프로세스 정보를 뜻한다.

Context 내용
CPU 상태 CPU 레지스터, 현재 프로세스 수행 위치 등
ex) IP(Instruction Pointer)
PCB(Process Control Block) 커널이 관리하는 프로세스 정보 구조체
가상주소공간 데이터 코드, 데이터, 스택, 힙

멀티태스킹 운영체제에서 실행되는 프로세스는 위와 같은 정보를 토대로 커널이 프로세스를 실행한다.

 


컨텍스트 스위칭(Context Switching)

 

CPU가 한 프로세스에서 다른 프로세스의 PCB 정보로 스위칭 되는 과정을 의미한다.

 

멀티프로세스 환경에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야할 때, CPU가 지금 실행하고 있는 프로세스의 실행을 멈추고, 기존의 프로세스의 상태 또는 레지스터 값을 저장하고 CPU가 다음 프로세스를 수행하도록 프로세스의 상태 또는 레지스터 값을 교체하는 작업.

 

 

 

728x90
반응형

'컴퓨터과학 > OS' 카테고리의 다른 글

[OS] 스레드(Thread)  (0) 2021.04.12
[OS] 프로세스(2)  (0) 2021.04.12