Skip to content

Instantly share code, notes, and snippets.

@torpedo87
Last active April 24, 2018 04:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save torpedo87/3608d469f0707647651f317e51357e0f to your computer and use it in GitHub Desktop.
Save torpedo87/3608d469f0707647651f317e51357e0f to your computer and use it in GitHub Desktop.
process

Chapter3. 프로세스

  1. 프로세스와 스레드의 차이
  • 스레드는 프로세스에서 실행 제어만 분리한 것
  • 프로세스가 하나의 작업 단위라면 스레드는 프로세스 내부에 존재하는 실행 단위이다.
  • 프로세스 하나에서 스레드들이 자원을 공유하여 자원생성과 관리 중복성을 최소화해 작업 수행능력 향상
  1. 프로세스가 차지하는 메모리 공간 구조
  • Stack = 호출된 함수의 복귀주소와 지역변수처럼 일시적인 데이터 저장
  • heap = 프로그램 실행 중 시스템 호출을 통해 사용되다가 해지되는 등 자유자재로 사용
  • data = 전역변수, 동적으로 할당받는 영역
  • text = 코드
  1. 운영체제가 스케줄러를 이용해 프로세스 실행을 제어하는 방법
  • 작업스케줄러 = 디스크에 저장된 작업들 중 선정하여 준비리스트에 삽입. 다중 프로그래밍의 정도를 결정 (디스크 -> 준비)
  • 프로세스 스케줄러 = 준비리스트에 있는 프로세스들의 상태변화를 일으킨다 (준비 -> 실행 -> 대기, 종료)
  1. 프로세스 제어블록(PCB)
  • 운영체제가 프로세스 실행을 제어하기 위해 PCB에 프로세스 정보를 저장. PCB는 프로세스를 생성할 때 만들어지고 실행이 종료되면 삭제된다
  • 프로세스 교환이 발생할 때 프로세서에 있는 레지스터의 내용은 나중에 프로세스가 올바르게 사용될 수 있도록 PCB에 저장
  1. 프로그램과 프로세스와 차이
  • 프로그램 = 프로세스 이전 단계로, 디스크에 저장되어 있는 정적인 상태
  • 프로세스 = 동적으로 자원을 요청할 수 있는 동적단위
  1. 프로세스의 생성
  • 프로세스는 실행중에 프로세스 생성 시스템을 호출하여 새로운 프로세스를 생성
  • 부모 프로세스는 자식 프로세스에 자원을 나눠주거나 일부자원을 공유할 수 있는데 자원의 일부만 사용하도록 제한해서 너무 많은 자식 프로세스를 생성하지 않도록 방지
  • 프로세스가 새로운 프로세스를 생성할 때에는 부모 프로세스와 자식 프로세스가 동시에 실행되거나, 부모프로세스가 자식 프로세스들이 모두 종료될때까지 기다린다
  1. 프로세스의 종료
  • 자식 프로세스가 할당된 자원을 초과하여 자원을 사용할 때, 자식프로세스에 할당된 작업이 더이상 없을 때 부모는 자식을 종료시킨다. 또한 부모 프로세스가 종료되면 자식프로세스도 종료된다
  1. 프로세스의 중단과 재시작
  • 시스템 부하를 조정
  • 시스템에 장애가 발생시 실행중인 프로세스를 중단했다가 시스템이 기능을 회복하면 재시작
  • 프로세스의 어느 부분이 의심스러울 때 사용자는 실행중인 프로세스를 중단하여 확인 후 재시작
  • 시스템 부담이 크면 프로세스 몇개를 중단했다가 시스템이 정상상태가 되면 재시작
  1. 프로세스 우선순위 변경
  • 프로세스 스케줄러는 PCB의 운선순위값을 이용해 프로세스를 처리
  • 입출력 중심의 프로세스는 높은 우선순위, 프로세서를 자주 짧게 사용
  • 프로세서 중심 프로세스는 낮은 우선순위, 프로세서 사용횟수는 적지만 한번에 오래 사용
  1. Context switch
  • 프로세스를 다른 프로세스로 교환시 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 것
  • 오버헤드가 발생한다
  • 문맥교환 요청이 발생하면 운영체제 모드로 넘어가서 이전 프로세스는 종료된다. 이전 프로세스의 상태를 PCB에 저장하고 새로 실행할 프로세스의 PCB로부터의 내용을 프로세서에 재저장하고 다시 사용자모드로 복귀하여 새 프로세스 실행
  • 스레드를 이용하여 context switch 를 효율적으로 처리
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment