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 |