운영체제

내가 공부하기 위한 공간 - [운영체제] 3- 프로세스

AbiTindt 2025. 4. 3. 14:23
반응형

[프로세스]

큐 방식

프로그램 + PCB(Process Control Block)

구조 : 코드(읽기) + 데이터(읽기,쓰기) + 힙(숨김) + 스택(숨김)

 

동적할당영역

스택 : 함수 호출 영역

힙 : 변수 할당 영역(포인터, malloc, calloc)

 

상태

생성(PCB+)>준비<(timeout)(Dispatch)>실행>완료(PCB-)

 

+대기(blocking)상태 : 실행 중 입출력 요청에 따라 대기상태로 변환, 완료되면 준비상태로 변환

+보류(Suspend)상태 : 대기상태에서 메모리에서 잠시 쫓겨난 상태, 스왑영역에 보관(보류대기상태 > 보류준비상태 <> 준비상태) - 재시작으로 대기상태/준비상태로 변환

  • 메모리 포과, 오류, 바이러스 등 여러 이유가 있음

+휴식(Pause)상태 : 프로세스가 일시적으로 중단(프로세스가 메모리에 있음)

 

 

[PCB]

구성 : 포인터, 상태, PID, PC, 우선순위, 메모리정보, 할당자원정보, 레지스터정보, 계정정보, PPID, CPID(없으면 -1) 등

 

 

[문맥교환]

PCB가 교환됨, 디스패치되는 프로세스는 CPU에 올라오고 타임아웃되는 프로세스는 PCB에 저장하고 나옴

교환에도 시간이 걸림(전환시간)

타임아웃 없이 완료상태로 가면 문맥교환을 하지 않은것(일괄처리) or 너무 많은 문맥교환 > 시분할 효율 안좋음

 

 

[프로세스 생성, 복사]

fork() : 기존 프로세스에 대해 복사

  • 기존 프로세스와 복사된 프로세스는 각각 부모-자식관계
  • 부모의 CPID는 자식의 PID를 갖고, 자식의 PPID는 부모의 PID를 가짐

부모가 먼저 없어져서 자식 프로세스만 남음 : 고아(Orphan) 프로세스

자식 프로세스가 없어진 후 뒤처리를 제대로 하지 않음 : 좀비(Zombie) 프로세스

> exit(), return(), wait(), 운영체제의 주기적 회수로 해결

 

exit() : 반환값으로 어떤 상태로 종료되었는지 가능 / 알려주기만 할 뿐임

wait() : 자식이 끝나길 기다렸다 끝나면 다음문장 실행>부모가 먼저 끝나는 경우가 없음

 

exec() : 기존 프로세스에 대해 구조를 재활용

  • PID, PPID, CPID를 제외한 내용들을 새로(코드, 데이터, 스택, 힙도 마찬가지)

프로세스 계층구조 : 동시 작업과 종료시 자원 회수에 용이

init : 일반 유저 프로세스의 맨 위

ex) login과 shell, login후 shell을 사용할 때 login종료 shell생성 보다는 login을 재사용하여 shell로 바꾸면 효율적

 

 

[스레드]

프로세스 코드에 따라 CPU에 요청할 실행 단위

멀티 스레드 : 프로세스 내 여러 스레드로 분할

멀티 태스킹(프로그래밍) : 한개의 처리기에 시분할을 이용하여 동시에 처리하는 것처럼 보임

멀티 프로세싱 : 여러 처리기에 동시에 처리

 

멀티태스킹(fork)은 정적영역이 여러개(HWP가 여러게) > 메모리 낭비 > 멀티스레드로 향상(LWP)

  • 장점 : 응답성, 자원, 효율
  • 단점 : 한 스레드에 문제=전체에 영향

모델 : 유저(커널1 to N), 커널(1 to 1), 멀티(N to M)

유저(User) 스레드

장점:

커널의 개입 없이 빠르게 생성 및 전환 (오버헤드 적음)

사용자 레벨에서 관리 가능하여 구현이 간단함

단점:

하나의 스레드가 블록되면 프로세스 전체가 멈출 수 있음

커널이 직접 스케줄링하지 않아 다중 CPU 활용이 어려움

커널(Kernel) 스레드

장점:

커널에서 직접 스케줄링하므로 멀티코어 활용 가능

하나의 스레드가 블록되더라도 다른 스레드 실행 가능

단점:

생성 및 전환 시 커널 개입 필요 → 오버헤드 증가

유저 스레드보다 구현이 복잡

멀티 스레드(Multi-threading) 전반적인 장단점

장점:

병렬 처리 가능 → 성능 향상

리소스 공유 가능 → 메모리 절약

단점:

동기화 문제 발생 가능 (데드락, 경쟁 상태 등)

디버깅이 어려움

반응형