- Memory layout
프로세스는 프로그램을 메모리로 불러들여 실제로 실행시키고 있는 것을 의미한다. 프로세서의 현재 활동 상태는 프로세서 카운터의 값과 프로세서 레지스터의 내용으로 표시된다. 프로세서의 메모리 레이아웃은 일반적으로 여러 섹션으로 나뉜다.
text section – 실행가능한 코드들(read only)
data section – global variables(initialized, uninitialized)
heap section – 프로그램 실행 시간동안 동적으로 할당되는 메모리
stack section – 함수 호출 시 임시 데이터 저장소(함수 매개변수, 반환 주소 및 로컬변수)
text section과 data section의 사이즈는 고정되어 있고, 프로그램 실행 시간 동안 변경되지 않는다. 하지만 heap section과 stack section은 프로그램 실행 동안 동적으로 줄어들고 늘어난다. 함수가 호출될 때마다 함수 매개변수, 로컬변수 및 반환 주소가 포함된 활성화 레코드가 스택에 푸시된다. 함수에서 제어가 반환되면 활성화 레코드가 스택에서 사라진다. 마찬가지로 메모리가 동적으로 할당되면 힙이 증가하고 메모리가 시스템을 반환하면 힙이 축소된다. 힙과 스택이 서로를 향해 증가하더라도 운영체제는 서로가 겹치지 않도록 해야한다.
<Process state>
- Context switch
우선 현재 프로세스의 state(PC, register)를 PCB에 저장한다. 그 후 실행시킬 프로세스의 state를 복원해온다.
- Multithreading
스레드는 code, data, files을 공유하고 고유한 register, pc, stack을 갖는다.
스레드를 사용하면 프로세스에 비해 응답성이 좋고, 경제적이며 멀티스레드를 사용하면 여러 코어를 한 프로세스가 사용할 수 있으므로 scaleabilty가 좋다.
Fork()를 하면 두개로 나눠지므로 fork()를 3번하면 총 8개의 프로세스로 나눠진다.
멀티쓰레드
- 하나의 목적을 가지고 하는 일을 여러 개로 나눠서 병행처리 해야 할 경우 사용한다.
- 장점: 멀티프로세스에 비해 메모리 사용이 적고, 쓰레드간 데이터 통신이 빠르며, 수행속도가 빠르다.
- 단점: 쓰레드간 자원 공유 문제가 발생, 설계와 제어가 까다로움
'학교공부 > 운영체제' 카테고리의 다른 글
[운영체제] Synchronization Examples (0) | 2023.04.24 |
---|---|
[운영체제] Synchronization tools (0) | 2023.04.24 |
[운영체제] CPU 스케줄링(CPU Scheduling) (0) | 2023.04.23 |
[운영체제] 프로세스(Process) (0) | 2023.04.23 |
[운영체제] 운영체제 구조(Operating System Structure) (0) | 2023.04.23 |