반응형
SMALL

=== 프로세스와 스레드의 정의 ===
- 프로세스란(process)?
- 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(task)라는 용어와 같은 의미로 쓰인다.
- 프로세스는 프로그램이 메모리에 올라가 인스턴스화 된것이다.
- 프로세스 들은 각각의 별도 메모리 공간을 할당 받는다. - 독립된 실행 환경을 가진다.
- 프로세스간의 메모리 공유는 할수 없다.
- 로세스 간 통신(IPC, Inter-Process Communication)을 통해 데이터를 공유.
- 스레드란(thread)?
- 프로세스 내에서 실행되는 흐름 (작업)의 단위를 말한다
- 스레드는 프로세스의 메모리 공간을 공유한다.
- 스레드는 프로세스 내에서 독립적인 실행 흐름을 가진다.
- 같은 프로세스 내의 다른 스레드와 데이터 공유 가능
- 경량화된 실행환경, 유연한 데이터 공유.
*요약 :
프로세스는 독립적인 실행 환경을 가지며, 각각의 프로세스는 서로 독립적으로 실행되지만 프로세스 간 통신을 통해 데이터를 공유는 가능.
스레드는 같은 프로세스 내에서 실행되며, 프로세스의 메모리를 공유하여 데이터를 더 빠르게 공유할 수 있습니다.
===그럼 소스 코드 파일이 어떤식으로 처리가 되는지 알아보자===
- 소스코드 파일 전처리 - 주석제거 & 헤더파일 병합하여 메크로를 치환
- 컴파일러가 어셈블리어로 변환 - 오류 처리, 최적화 작업 동반
- 어셈블러를 통해 목적코드로 변환 (Object Code) - OS 마다 확장자가 다르다 (예: 리눅스의 경우 .o)
- 링커를 통해 프로그램 내에 있는 라이브러리 함수 또는 다른 파일들과 목적코드를 결합하여 실행파일 생성
-(확장자 .exe 또는 .out)
=== 라이브러리와 동적 라이브러리 ===
- 정적 라이브러리
- 프로그램 빌드시 라이브러리가 제공하는 모든 코드를 실행파일에 넣는 방법
- 시스템 환경 등의 외부 의존도가 낮은 장점
- 코드중복등 메모리 효율성이 떨어지는 단점
- 동적 라이브러리
- 프로그램 실행시 필요할때만 DLL이라는 함수정보를 통해 참조하여 라이브러리를 쓰는 방법
- 메모리효율성이 좋은 장점
- 외부의존도가 높은 단점
=== 프로세스의 상태 ===
- 생성상태 (Create) 는 프로세스가 생성된 상태를 의미. fork() , exec() 함수를 통해 생성
여기서 두함수는 유닉스와 유닉스 기반의 운영체제에서 사용되는 시스템 콜(system call) 중 하나.
- fork() 함수
- 부모 프로세스의 주소공간을 그대로 복사, 새로운 자식 프로세스를 생성하는 함수.
- 주소공간만 복사할뿐 부모 프로세스의 비동기 작업등은 상속하지 않는다.
- exec() 함수
- 새롭게 프로세스를 생성하는 함수.
- 대기 상태(ready)
- 메모리 공간이 충분하면 메모리를 할당받고 아니면 아닌 상태로 대기하며 CPU 스케줄러로 부터 CPU 소유권이 넘어오기를 기다리는 상태
- 대기 중단 상태 (ready suspendeed)
- 메모리 부족으로 일시 중단된 상태
- 실행 상태 (running)
- CPU 소유권과 메모리를 할당받고 인스트럭션을 수행중인 상태
- CPU Burst 가 일어났다고도 표현
- 중단 상태(blocked)
- 어떠한 이벤트가 발생한 이후 기다리며 프로세스가 차단된 상태
- I/O 디바이스에 의한 인터럽트로 발생하기도함 (예 : 프린트 인쇄버튼 을 누를시 프로세스가 잠깐 멈춘듯 보이는 상태 등)
*여기서 I/O 디바이스란?
- I/O 디바이스는 컴퓨터에서 입력(Input)과 출력(Output)을 처리하는 디바이스를 일컫는다
- 일시 중단 상태(blocked suspended)
- 대기 중단과 유사
- 중단된 상태에서 프로세스가 실행되려고 했지만 메모리 부족으로 일시 중단된 상태
- 종료 상태 (terminated)
- 메모리와 CPU 소유권을 모두 놓고 가는 상태
- 자연스럽게 종료되는 것도 있지만 부모 프로세스가 자식 프로세스를 강제시키는 비자발적 종료(abort) 도 있다.
- 자식 프로세스에 할당된 메모리 한계치를 넘어섰을경우
- 부모 프로세스가 종료되었을 경우
- 사용자가 process.kill 명령어를 사용하였을 경우
다음 정리에는 스택과 힘 메모리에 대해 정리.
반응형
LIST
'CS > CS 정리' 카테고리의 다른 글
| [CS] 멀티 프로세싱 & 멀티 스레딩 간단 정리 . 2 (1) | 2023.04.15 |
|---|---|
| [CS] 멀티 프로세싱 간단 정리 . 1 (0) | 2023.04.09 |
| [CS] PCB 간단 정리 (0) | 2023.04.08 |
| [CS] 프로세스 메모리 구조 간단 정리 (0) | 2023.04.06 |
| [CS] 프로그램 패러다임 (객체지향의 설계원칙 : SOLID) (0) | 2023.02.13 |