전공 과목 이수1👨‍💻/운영체제 OS

5주차

천숭이 2021. 4. 15. 17:09

P.116

- 운영체제는 적절한 응답시간을 제공하면서 처리기 이용률을 극대화할 수 있도록 여러 프로세스 수행을 인터리빙해야한다.

- 운영체제는 교착상태를 회피함과 동시에 특정정책(운선순위 부여)에 부합하도록 자원을 프로세스에게 할당해야한다.

- 운영체제는 프로세스 간 통신과 사용자의 프로세스 생성을 지원해야 하는데, 이를 모두 응용을 구조화하는데 도움이 된다

 

프로세스 : 실행중인 프로그램

메인메모리에 자리잡고(로드) 있어야 함.

프로세스의 두 필수적인 요소는 프로그램 코드(동일프로그램에서의 서로다른 프로세스들이 공유할 수 있는 부분) 및 코드와 연계된 데이터의 집합.

하드디스크에 저장되어있는 건 프로세스 아님, 실행중이지 않기 때문, 그냥 프로그램, 코드

돌고있는 게 프로세스, 레지스터를 이용해 주소를 참조한다

 

메인프레임 : 대형 컴퓨터, 금융, 은행사에서 씀

전산실은 미니 컴퓨터

 

IBM : 컴퓨터 회사 이름

 

교착 상태 : 서로 진행을 못하는 상태

 

응용 : 어플리케이션(앱), 운영체제 시스템이 아닌 프로그램

 

통신 : 정보 교환, input, output, exchange, communication, 둘이 이루고자하는 목적

 

 

# 프로세스에 대한 제어 정보(PCB) ***********중요

- Process Control Block

- 수행 프로세스를 인터럽트한 후 프로세스 수행을 재개할 수 있도록 정보 유지

- Process = =program code + 관련 data + PCB

structure 타입으로 다 되어있음

- 학적부

- 운영체제가 관리

- 학번은 유일하게 식별

- 상태 : 실행중인지

- 우선순위

- 프로그램 카운터 : 다음에 수행될 명령어의 주소

- 문맥 데이터

- 입출력 상태 정보

- 어카운팅 정보 : 과금 정보

 

P.118 프로세스 및 프로세스 제어블록(PCB) ***********중요

식별자 : 각 프로세스를 다른 모든 프로세스로부터 구별하게 해주는 유일한 식별자

상태 : 프로세스가 수행중이라면 수행상태에 있다고한다.

우선순위 : 다른 프로세스들에 대해 상대적인 우선순위 수준

프로그램 카운터 (PC) : 프로그램에서 다음에 수행될 명령어의 주소

메모리 포인터 : 프로세스와 연계된 프로그램 코드 및 데이터

문맥데이터 : 처리기의 레지스터에 존재하는 데이터

입출력 상태 정보 : 프로세스에 할당된 입출력 장치

어카운팅 정보 : 사용자 처리기 시간 및 클록 시간 제한, 계정 번호 등

 

중요 ) 위 여덟개의 정보들이 PCB에 구조체 타입으로 자리를 잡고 정보들이 관리되고 유지되며 프로세스, CPU등의 정보를 관리한다.

 

* 궤적(트레이스) : 몇번째 줄 수행했는지 추적, 프로세스를 위해 수행되는 명령어 리스트

 

# 디스패처

- 처리기(cpu)를 한 프로세스로부터 다른 프로세스로 교체하여 줌

- 각 프로세스에다가 cpu를 할당해주는 프로그램

- 운영체제에 가장 핵심적인 프로그램

A, B, C가 메인메모리에 적재(로드 load)됨

 

그림3.2 ) 명령어 사이클13에서 단순 수행(그림3.4)

그림3.2는 세개의 프로세스가 메모리 내에서 어떠헥 배치되어있는지를 보여준다. 세 프로세스는 모두 주기억장치에 완전히 적재된 프로그램으로 표현될 수 있다.  

 

 

 

 

 

 

 

 

 

 

 

 

음영부분이 디스패처함수 실행 부분P.116

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# test 디렉토리 만들기

 

# fork() 함수

- 새로운 프로세스가 몇 개 돌았냐, fork가 몇 개 있냐

- 새로운 자식 낳음(새로운 프로세스 생성)

- 컴퓨터에서 최초의 프로세스 : 윈도우 운영체제

- 이 프로그램 자체가 parent(test2.c), fork() 3번

- fork() 3번 : 자식 프로세스 7개, printf()문 8번

- fork() 4번 : 자식 프로세스 15개, printf()문 16번

 

 

# exec() 함수

- fork()된 다음에 자식이 실행

- parent프로세스와 child 프로세스가 통신 (IPC)

 

# test3.c

pid=78, glob=7, var=89 // child process

pid=77, glob=6, var=888 // parent process는 변화없음

* 식별자 : 학번, 주민등록번호

0보다 큰 정수값 pid(id값)

fork() 함수 실행하면 리턴값 들어옴, 0보다 적으면 실패

pid 값이 0이면 child process

pid 값이 0보다 크면 parent process

하나가 복사돼서 만들어짐

sleep(2) : 2초동안 기다림, child 먼저 찍도록 기다림

 

 

# test4.c

child process는 메시지 5번 출력, parent process는 3번 출력

0면 child process, n=5

default, 0보다 큰 경우, parent process, n=3

parent n은 3, 2, 1

child n은 5,4,3,2,1

'전공 과목 이수1👨‍💻 > 운영체제 OS' 카테고리의 다른 글

운영체제 7주차  (0) 2021.04.15
운영체제 | ubuntu 우분투 실습  (0) 2021.03.28
운영체제 키워드0316  (0) 2021.03.16