운영체제 3주차-chapter 3

Yk Lee·2023년 3월 20일
0

운영체제

목록 보기
4/8

3.1 프로세스란?

프로세스 관리 : 기본 요규 조건

  • 다중 프로세스의 수행을 인터리빙 방식으로 처리한다.
  • 프로세스에 자원을 할당하고, 각 프로세스의 자원을 다른 프로세스로부터 보호한다.
  • 프로세스간 정보를 공유하고 교환할 수 있게 한다.
  • 프로세스간 동기화를 지원한다.

배경지식

들어가기 앞서 개념을 요약해보자
1. 컴퓨터 플랫폼은 하드웨어 자원들의 집합으로 구성된다.
2. 컴퓨터 어플리케이션들은 어떤 업무를 수행하기 위해 개발된다.
3. 주어진 하드웨어 플랫폼 상에 직접 응용들을 작성하는 것은 비효율적이다.

  • 공통 루틴(common routines) 개발 유도.
  • 자원 공유(resource sharing)를 위한 소프트웨어 필요
  • 자원 보호(resource protection) 기법 필요
  1. 운영체제는 어플리케이션이 사용할 수 있는 편리하고, 풍부하고, 안전하고, 일관성 있는 인터페이스를 제공
  2. 운영체제는 자원들에 대해 균일하고 추상화된 표현(representation)을 제공
  • 응용은 해당 자원을 요청하고 접근 가능

운영체제는 어플리케이션 수행을 관리함에 있어 다음을 지원
1. 리소스를 여러 어플리케이션에서 사용할수 있다.
2. 프로세서가 여러 어플리케이션 간에 전환되므로 모든 작업이 진행 중인 것처럼 보인다.
3. 프로세서 및 I/O 장치를 효율적으로 사용할 수 있다.

프로세스 및 프로세스 제어 블록

프로세스의 두 가지 필수 요소
프로그램 코드
동일한 프로그램을 수행하는 서로 다른 프로세서들이 고유 할 수 있다.
해당 코드와 연결된 데이터 집합
프로세서가 프로그램 코드를 실행하기 시작할때, 우리는 이 실행 엔티티를 프로세스라고 부른다.

프로세스 요소
프로그램이 실행되는 동안 이 프로세스는 다음과 같은 여러 요소에 의해 식별될 수 있다.
1. 식별자(identifier): 각 프로세스에 대한 고유 식별자(숫자, 색인 항복)를 저장
2. 상태(state): 생성, 준비, 실행 중단 등의 상태를 표시
3. 우선순위(priority)
4. 프로그램 카운터(program counter) : 프로그램에서 다음에 수행될 명령어의 주소
5. 메모리 포인터(memory pointers): 공유되는 메모리 블록에 대한 포인터
6. 문맥 데이터(context data): 프로세스 수행 중, 처리기 레지스터에 존재하는 데이터
7. 입출력 상태 정보 (I/O status information)
8. 어카운팅 정보(accounting informantion,과금정보)

프로세스 컨드롤 블럭(process control block)

위 요소들은 프로세스 컨드롤 블럭이라는 자료구조에 저장된다.
주요 역할
1. 실행 중인 프로세스를 중단하고 나중에 중단이 발생하지 않은 것처럼 실행을 재개할 수 있다.
2. 운영체제에서 생성 및 관리 된다.
3. 여러 프로세서를 지원할 수 있는 핵심 도구이다(멀티 프로세싱)

3.2 프로세스 상태(process states)

개별 프로세스 행위의 특성은 그 프로세서를 위해 수행되는 일련의 명령어 리스트로 표현

1. trace(궤적)

  • 프로세스를 프로세서가 수행할때 처리한 명령어들을 순서대로 나열한 것이다.
  • 예를 들면 각 프로세스마다 적혀진 숫자는 실행했던 명령어 주소들을 나열한 것이다.즉 프로세스가 실행된 궤적을 나타낸다.
  • 멀티 프로그래밍에서 여러 프로세스가 수행되는 과정을 trace를 따라서 살펴보면 다음과 같다.

    멀티프로그래밍을 위한 TimeOut 혹은 I/O Interrupt 마다 프로세스들이 교환되어서 공평하게 여러 작업들이 cpu를 사용하게 된다.즉 독점을 방지한다.
  1. 프로세스 A의 처음 여섯 명령어가 수행되어 Time-Out이 되면 프로세스 B로 제어를 넘기기 위해 디스패처 내의 코드가 수행된다
  2. 프로세스 B는 네 개의 명렁을 수행한 후, 입출력을 요청하고 대기한다.
  3. 프로세서 B의 수행이 중지되고 디스패처를 통해 프로세스 c로 제어가 이동된다.
  4. C가 시간 만료된 후, 처리기는 다시 프로세스 A로 이동한다.
  5. 프로세스 A가 시간 만료 될때, 프로세스 B는 여전히 입출력 연산이 완료되기를 기다리고 있으므로 디스패처는 프로세스 C로 다시 이동한다.

2. Dispatcher(디스패처)

  • 프로세스를 한 프로세스에서 다른 프로세스로 전환하는 작은 프로그램

2-상태(Two-State) 프로세스 모델


프로세스는 두 상태중 하나이다.
1. Runnig(수행)
2. Not-Runing(비수행)
운영체제는 새로운 프로세스를 생성할때, 그 프로세스에 대한 프로세스 제어 블록을 생성하고 그 프로세서를 시스템 내에 비수행 상태로 초기화 시킨다. 이제 프로세스는 존재하게 되며 운영체제 에게 알려져 자신이 수행될 기회를 기다린다.
큐잉 다이어그램(Queuing Diagram)
Queue는 수행되지 않는 프로세스가 기다리는 장소로 단일 큐 항목은 특정 프로세서의 프로세스 제어 블록(PCB)를 가리키는 포인터이다. 수행 중인 프로세스가 인터럽트되면 디스패처가 다음에 수행할 프로세스를 큐에서 선택해서 수행을 이어간다.

프로세스의 생성과 종료

프로세스 생성(Process creation)

일반적으로 네가지 사건이 발생했을때 프로세스가 생성된다.
1. new batch job(새로운 일괄처리 작업)
운영체제가 새로운 작업을 처리할 준비가 되면, 다음에 수행할 일련의 작업제어 명령을 읽어 들인다.
2. Interactive Logon(대화영 로그온)
사용자가 터미널에서 시스템에 로그온 한다.
3. Created by OS to provide a service(서비스를 제공하기 위해 운영체제가 생성)
사용자가 대기 할 필요 없도록, 운영체제는 사용자 프로그램을 대신해 어떤 기능을 수행할 프로세스를 생성할 수있다.
4. Spawned by existing process(기존 프로세스에 의해 생성)
모듈화를 위해서 병렬성을 활용하기 위해, 사용자 프로그램은 많은 프로세스의 생성을 명령할 수 있다.

Process Spawning
운영체제가 어떤 프로세스의 명시적인(explicit)요청에 의해 새로운 프로세스를 생성한다.

하나의 프로세스가 다른 프로세스를 생성할떄 전자를 Parent process 후자를 child process라고 한다. 서로 통신하면서 협력할 필요가 있다.

profile
AR개발자지망생

0개의 댓글