본문 바로가기

CS/운영체제

[ 프로세스 ] Re

프로세스는 프로그램이 메모리에 올라가 인스턴스화된 것을 말한다. 

 

1) 프로세스와 컴파일 과정

 

프로그램의 컴파일 과정은 다음과 같다.

프로그램의 컴파일 과정

 

전처리 

소스 코드의 주석을 제거하고 #include 등 헤더 파일을 병합하여 매크로를 치환한다.

 

컴파일러

오류 처리, 코드 최적화 작업을 하며 어셈블리어로 변환합니다.

 

Java의 경우는 JVM에서 실행되므로 어셈블리어로 변환이 안된다.

    → Java의 장점

 

어셈 블러

어셈블리어는 목적 코드(object code)로 변환된다. 이 때 확장자는 운영체제마다 다르다.

→ Linux에서는 [ .o ]가 되고 Windows에서는 [ .c ]가 된다.

 

링커

프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적 코드를 결합하여 실행 파일을 만든다.

실행 파일의 확장자는 .exe 또는 .out이라는 확장자를 갖는다.

 

정적 라이브러리와 동적 라이브러리

 

정적 라이브러리는 프로그램 빌드 시 라이브러리가 제공하는 모든 코드를 실행 파일에 넣는 방식으로

라이브러리를 쓰는 방법이다. 시스템 환경 등 외부 의존도가 낮은 장점이 있지만 코드 중복 등 메모리 효율성이

떨어지는 단점이 있다.

 

동적 라이브러리는 프로그램 실행 시 필요할 때만 DLL이라는 함수 정보를 통해 참조하여 라이브러리를

쓰는 방법이다.

 

1) 프로세스의 상태

 

● 생성

 

- 프로세스가 생성된 상태를 의미하며 fort() 또는 exec()함수를 통해 생성한다. 이 때 PCB가 할당된다.

- fork() : 부모 프로세스의 주소 공간을 그대로 복사하여, 새로운 자식 프로세스를 생성하는 함수이다. 주소 공간만

              복사할 뿐이지 부모 프로세스의 비동기 작업 등을 상속하지는 않았다.

 

※ 꼬꼬무

부모 프로세스가 뭔데? : 실행하려는 프로세스보다 먼저 실행된 프로세스이다. 즉 먼저 실행된 주소 공간만

                                        복사해서 사용한다는 것이다. 그러므로 CPU의 부하가 줄어든다.

 

- exec() : 새롭게 프로세스를 생성하는 함수이다.

 

● 대기 상태

 

- 대기 상태(ready)는 메모리 공간이 충분하면 메모리를 할당받고 아니면 아닌 상태로 대기하고 있으며

CPU 스케줄러부터 CPU 소유권이 넘오오기를 기다리는 상태이다.

 

● 대기 중단 상태

- 대기 중단 상태(ready suspended)는 메모리 부족으로 일시 중단된 상태이다.

 

● 실행 상태

- 실행 상태(running)은 CPU 소유권과 메모리를 할당받고 인스터력션을 수행 중인 상태를 의미한다.

   이를 CPU burst가 일어났다고도 표현한다.

 

● 중단 상태

- 중단 상태(blocked)는 어떤 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태이다.

  I/O 디바이스에 의한 인터럽트로 이런 현상이 많이 발생하기도 한다. 

  ex) 프린트 시 잠깐 실행파일이 멈춤

 

● 일시 중단 상태

- 일시 중단 상태는 대기 중단과 유사하다. 중단된 상태에서 프로세스가 실행되려고 했지만 메모리 부족으로

  일시 중단된 상태이다.

 

● 종료 상태

- 종료 상태(terminated)는 메모리와 CPU 소유권을 모두 놓고 가는 상태이다. 종료는 자연스럽게 종료되는

  것도 있지만 부모 프레세스가 자식 프로세스를 강제시키는 비자발적 종료(abort)로 종료되는 것도 있다.

'CS > 운영체제' 카테고리의 다른 글

교착상태(deadlock) Re  (0) 2024.06.22
메모리 관리(Memory management) Re  (0) 2024.06.21
메모리(Memory) Re  (0) 2024.06.21
CPU(Central Processing Unit) Re  (1) 2024.06.20
운영체제의 역할과 구조 Re  (0) 2024.06.20