프로세스

이성준·2022년 10월 7일
0

Operating System

목록 보기
1/1

프로세스

프로세스의 개념

현대 컴퓨팅시스템에서 작업 단위, cpu의 활동들?, 프로그램이 메모리에 올라간것, 실행중인 프로그램

프로세스의 메모리 배치

  • Stack 영역 : 함수를 호출 할때 임시 데이터 저장장소((함수를 수행하고 원래 프로그램으로 되돌아올 위치,지역변수)= 활성화 레코드)
  • Data 영역 : 전역변수나 파일 각종 데이터들을 저장
  • Heap 영역 : 프로그램 실행중에 동적으로 할당되는 메모리
  • Text 영역 : 개발자가 쓴 코드가 저장된다.

프로세스 제어 블록 ( PCB)

프로세스를 실행하기위한 필요한 정보들이 들어있다.

식별자, 다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터, 각종 레지스터 등등

프로세스의 상태

  • 생성상태 : 이제 프로그램이 실행되고, 메모리에 올라온다, 그리고 운영체제로 부터 PCB를 받은 상태
  • 준비상태 : 준비 큐에서 기다리면서 자기 순서를 기다리고 있는 상태, 순서는 스케쥴러가 정해줌
  • 실행상태 : 실행되는 상태인데, 자신에게 주어지는 시간(타임 슬라이스)만 실행된다.
  • 대기상태 : I/O나 이벤트가 생기면 입출력장치마다 마련된 준비큐에서 쉬다가 인터럽트받고 다시 일하러간다.
  • 완료상태 : 코드랑 데이터들을 모두 메모링에서 삭제하고 PCB를 폐기한다.

프로세스 스케줄링

스케쥴러

옛날에는 일괄작업 시스템 이였지만, 지금은 CPU코어에서 찰나의 시간동안에 여러 프로세스를 번갈아 실행하면서 작업을 동시에 하는것처럼 느끼게해주는데, 이때 프로세스가 cpu에 어떻게 할당될것인지 정하는게 cpu 스케쥴러이다.

스케쥴링 큐

프로세스가 생성되고 준비 큐에 들어가서 준비 상태가 되어 cpu에서 실행되기만을 기다린다. 그리고 시스템에는 여러 가지큐가 존재하는데,

준비큐에서 디스패치되가지고 코어에 할당된다음, i/o요청이 필요하면 i/o 대기 큐에도 가고, 인터럽트 당하거나, 타임슬라이스 만료되면 다시 준비큐에 간다

컨텍스트 스위치

프로세스는 아주 짧은 시간동안 코어를 점유하며 번갈아 실행되는데, 이때 프로세스가 전환되는 과정을 컨텍스트 스위치
라고한다. a 프로세스와 b 프로세스가 계속 번갈아가면서 실행되려면 각 프로세스가 실행되던 문맥을 저장해야하는데
이 문맥은 pcb에 표현되고, cpu 레지스터의 값, 프로세스의 상태 등을 저장한다.

1. a프로세스는 문맥을 Pcb저장하고 cpu 코어에서 쫓겨난다. 그리고
2. b프로세스의 pcb에서 문맥을 복구해서 cpu 코어에서 실행한다.
3. 인터럽트나 시스템 콜이 생기면 b프로세스는 문맥을 Pcb저장하고 cpu 코어에서 쫓겨난다.
4. 1번으로 다시

저 idle 상태는 cpu가 아무 일도 안하는 상태다.

프로세스 연산

프로세스 생성과 복사

프로세스가 생성되고(부모 프로세스) 그 프로세스는 자신을 복사해서 다른 프로세스(자식 프로세스)를 만들수있다.
unix에서,
1. 프로세스는 fork() 시스템콜로 자식프로세스를 낳을수 있다. 자식프로세스는 구분자 빼고 부모 프로세스의 자원을 그대로 상속받는다
그리고 exec()로 아예 새로운 프로세스로 바꿀수도 있다. -> 코드영역을 새걸로 바꾸고, 데이터 영역을 새로운 변수로 채워지고 스택 영역이 리셋된다.

프로세스 종료

부모 프로세스는 자원을 회수하기 위해 자식프로세스를 기다리는데, 부모가 먼저 죽어버리면, 자식은 미아프로세스가 되서
자원이 낭비가 된다.

프로세스 간 통신

프로세스는 독립적이게 실행되기도 하고 , 데이터를 주고 받으면서 협업하기도 한다.

전역 변수를 이용한 통신

공동으로 관리하는 메모리를 통해서 전역변수에 값을 쓰고, 자식프로세스가 그 전역변수를 읽는 방식으로 통신한다.

파이프를 이용한 통신


파이프에 쓰기 연산을 하면 파이프에 데이터가 들어가고 파이프에 읽기연산을 하면 데이터를 받는다. 프로세스 b가 빈 파이프에 읽기 연산을 했다면 빈 파이프에 데이터가 들어올때까지 대기상태에 빠진다.

소켓을 이용한 통신


자신과 상대의 소켓을 바인딩하고 소켓에 쓰기 연산과 읽기 연산을 통해 통신을 한다.

0개의 댓글