cs(운영체제)

프로세스

그zi운아이 2023. 9. 4. 20:33

운영체제란

운영체제는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록(스케줄링,프로세스 상태)돕는 특별한 프로그램입니다.

운영체제 또한 프로그램과 마찬가지로 메모리에 적재되어야 되는데 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행됩니다.

 

프로세스란

프로세스는 메모리에 적재된 프로그램 즉 실행중인 프로그램을 뜻한다.

프로세스는 한개 이상의 쓰레드를 가지고 있다.

CPU는 한번에 한가지 프로세스만 실행할 수 있기에 CPU는 프로세스들을 번갈아 실행한다.

 

프로세스의 메모리 영역

프로세스는 크게 코드 영역,데이터 영역, 힙 영역, 스택 영역으로 나뉘어 저장된다.

 

코드영역
실행할 수 있는 코드로 기계어로 이루어진 명령어가 저장된다.
쓰기가 금지되어 있는 읽기 전용 공간이다.

데이터 영역
전역변수와 정적변수가 저장됩니다. 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸됩니다.

힙 영역
프로그래머가 직접 할당할 수 있는 저장 공간으로 프로그래밍 과정에서 힙 영역에 메모리 공간을 할당하면 언젠간 공간을 반환해야 한다.

스택 영역
데이터를 일시적으로 저장하는 공간으로 함수의 실행이 끝나면 사라지는 매개 변수, 지역 변수가 대표적이다.

 

프로세스 제어 블록(PCB)

프로세스는 실행을 위해 CPU를 필요로 하지만 CPU자원은 한정되어 있습니다. 모든 프로세스는 CPU를 동시에 사용할 수 는 없는데 PCB는 프로세스의 전반적인 정보를 기록해 이를 해결해준다.

PCB는 문맥교환에서도 사용되며 PCB는 프로세스가 실행되면 커널영역에 저장된다.

PCB는 아래와 같은 정보들이 담긴다.

  • 프로세스 ID : 프로세스를 식별하기 위한 고유 번호
  • 레지스터값 : 프로세스가 이전까지 사용했던 레지스터의 중간값들을 복운하여 저장한다. 
  • 프로세스 상태 : 프로세스의 상태 정보가 저장된다.
  • CPU 스케줄링 정보 :
  • 메모리 관리 정보

문맥 교환

CPU는 한번에 한가지 일만 처리가 가능한데 이를 해결하기 위해 동시에 처리하는 것처럼 여러 프로세스를 바꿔가며 실행하는데 이 과정에서 현재 실행하고 있는 프로세스의 상태와 정보를 저장하고 다음 진행할 프로세스의 상태와 정보를 읽어 오는 것을 문맥 교환이라고 한다.

 

문맥 교환 과정

1.인터럽트 : 현재 실행중인 프로세스가 인터럽트 요청을 받거나 시스템 호출을 통해 CPU를 양보하게 된다.

2.상태저장 : 현재 실행중인 프로세스의 상태와 정보(PC,SP)등의 값을 PCB에 저장한다.

3. 프로세스 복원: 다음에 실행될 프로세스의 PCB에서 필요한 정보를 가지고와 이전 상태로 복원한다.

4. 프로세스 실행 : 새로운 프로세스가 실행된다.

프로세스 상태 

실제로 컴퓨터를 사용할 때는 여러 프로세스들이 빠르게 번갈아 가면서 실행되는데 이 과정에서 프로세스는 여러 상태를 거시며 실행되고 이는 PCB를 통해 관리 된다..

다음은 프로세스의 대표적인 상태 이다.

생성 상태 

메모리에 적재되어 PCB를 할당받은 상태로 생성 상태를 거쳐 주기억 장치의 공간이 충분하면 준비 상태가 되고 그렇지 않으면 대기 상태가 된다.

 

준비 상태 

CPU의 할당을 받기를 기다리는 상태로 당장이라도 CPU를 할당받아 실행할 수 있지만, 자신의 차례가 아니기에 기다리고 있는 상태이다.

 

실행 상태

CPU를 할당받아 실행 중인 상태로 준비상태의 프로세스가 디스패치되어 실행상태가 된다. 일정 시간 동안 CPU를 사용하고. 할당된 시간을 모두 사용한다면 다시 준비상태가 되고 실행 도중 입출력 작업이 있다면 끝날 때까지 대기 상태가 된다.

 

대기 상태

프로세스 실행 도중 인터럽드 요청이 오면 이를 끝낼 따까지 기다려야 되는데 이 기다리는 상태를 대기 상태라고 한다.

인터럽트가 종료되면 해당 프로세스는 다시 준비 상태로 돌아가 CPU에 할당 받기를 기다린다.

 

종료 상태

프로세스가 종료된 상태로 PCB와 프로세스가 사용한 메모리를 정리한다.

 

스레드

실행의 단위로 프로세스를 구성하는 실행의 흐름 단위를 뜻한다. 하나의 프로세스는 최소 한개 이상의 스레드를 가지고 있고 하나의 프로세스를 통해 여러 부분을 동시 실행할 수 있다.

각각의 스레드는 스레드제어블록(TLB)를 가지고 각기 다른 코드를 수행 가능하다.

 

멀티 프로세스와 멀티 스레드

컴퓨터 실행과정에서 여러 프로세스가 동시에 실행될 수 있는데 이때 여러 프로세스를 동시에 실행하는 것을 멀티프로세스 여러 스레드로 프로세스를 동시 실행하는 것을 멀티 스레드라고 한다.

 

멀티 프로세스의 장단점

장점

독립된 구조를 가지기 때문에 안전성이 높다

프로세스 중 하나에 문자게 생겨도 다른 프로세스에 영향을 주지 않아 갑자기 정지 되거나 하는 문제가 발생하지 않는다.

ex : 크롭의 각각의 탭

 

단점

독립된 메모리 영역을 가지기 때문에 문맥교환이 비교적 자주 일어나 오베헤드가 발생한다.

 

멀티 쓰레드 장단점

장점 

각각의 자원을 공유하기 때문에 메모리를 더 효율적으로 사용 가능하다.

 

단점

자원을 공유하기에 동기화 문제가 발생할 수 있다.

하나의 스레드가 문제가 생기면 다른 스레드도 영향을 받는다.