[컴퓨터 구조]-프로세스와 스레드

Ethan·2023년 8월 21일
0

1. 프로세스 개요

1-1. 프로세스 직접확인하기

foreground process: 앱과같이 보이는 프로세스들
background process: 사용자가 보지 못하는 뒤편에서 실행되는 프로세스

1-2. 프로세스 제어블록(PCB: Process Control Block)

운영체제는 빠르게 ㅁ번갈아 수행되는 프로세스의 실행 순서를 관리하고, 프로세스에 cpu를 비롯한 자원을 배분하는데 이때 커널 영역에 있는 pcb를이용해 특정 프로세스를 식별하고 해당 프로세스를 처리하는데 필요한 정보를 판단한다.

  • 프로세스 ID : 프로세스의 고유번호
  • 레지스터값
  • 프로세스 상태
  • cpu 스케줄링 ㅈ정보
  • 메모리 관리 정보: 베이스 레지스터, 한계 레지스터, 페이지 테
  • 사용한 파일과 입출력 장치 목록

1-3. 문맥교환

하나의 프로세스에서 다른 프로세스로 넘어갈 때 기존 프로세스의 중간정보를 PCB에 백업하고 새로운 프로세스의 문맥을 PCB 로 부터 복구하여 새로운 프로세스를 실행하는것

1-4. 프로세스의 메모리 영역

정적 할당영역

  • 코드영역(텍스트 영역) : 데이터가 아닌 CPU가 실행할 명령어가 담겨있기 때문에 쓰기가 금지되어있다(읽기전용 공간).
  • 데이터 영역: 전역변수와 같이 프로그램이 실행되는 동안 유지할 데이터 저장공간

동적 할당 영역

  • 힙 영역: 프로그래머가 직접 할당할 수 있는 저장공간 (해당공간 반환하지 않으면 메모리 누수가 일어남)

  • 스택영역: 매개변수 지역변수와 같이 잠깐쓰고 버릴 값들이 저장되는 공간

2. 프로세스 상태와 계층구조

2-1. 프로세스 상태

  • 생성상태 : 메모리에 적재되어 PCB를 할당받은 상태
  • 준비상태 :
  • 실행상태 :
  • 대기 상태 :
  • 종료상태 : 운영체제는 PCB와 프로세스가 사용한 메모리를 정리한다.

2-2. 프로세스 계층구조

프로세스는 실행도중 시스템 호출을 통해 다른 프로세스를 생성할 수 있다

부모 프로세스 fork 통해 복사본 자식프로세스로생성 -> 자식 프로세스 exec 통해 메모리공간 다른프로그램으로 교체

3. 스레드

스레드: 프로세스 내의 실행 흐름 단위, 스레드는 프로세스 내에서 각기 다른 스레드 ID, 레지스터 값, 스택 으로 구성되어 있어 각기 다른 코드를 실행 할 수 있다.

스레드들은 실행에 필요한 최소한의 정보 를 유지한 채 프로세스 자원을 공유하며 실행된다.

머ㅓㄹ티프로세스 ㅁ멀티스레드
자원공유x(메모리 낭비) 자원공유0(협력과 통신에 유리, 메모리효율 0 but 하나의 스레드에 문제가 생기면 프로세스 전체에 문제)

profile
코딩하는 알파카

0개의 댓글