프로세스 : 실행중인 프로그램
메인메모리에 자리잡고(로드) 있어야 함
하드디스크에 저장되어있는 건 프로세스 아님, 실행중이지 않기 때문, 그냥 프로그램, 코드
돌고있는 게 프로세스
메인프레임 : 대형 컴퓨터, 금융, 은행사에서 씀
전산실은 미니 컴퓨터
IBM : 컴퓨터 회사 이름
교착 상태 : 서로 진행을 못하는 상태
응용 : 어플리케이션(앱), 운영체제 시스템이 아닌 프로그램
통신 : 정보 교환, input, output, exchange, communication, 둘이 이루고자하는 목적
# 프로세스에 대한 제어 정보(PCB) ***********중요
- structure 타입으로 다 되어있음
- 학적부
- 운영체제가 관리
- 학번은 유일하게 식별
- 상태 : 실행중인지
- 우선순위
- 프로그램 카운터 : 다음에 수행될 명령어의 주소
- 문맥 데이터
- 입출력 상태 정보
- 어카운팅 정보 : 과금 정보
* 궤적(트레이스) : 몇번째 줄 수행했는지
# 디스패처
- 처리기(cpu)를 한 프로세스로부터 다른 프로세스로 교체하여 줌
- 각 프로세스에다가 cpu를 할당해주는 프로그램
- 운영체제에 가장 핵심적인 프로그램
A, B, C가 메인메모리에 적재(로드)됨
# 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
'전공 공부 > 운영체제' 카테고리의 다른 글
운영체제 9주차 강의 (0) | 2021.04.27 |
---|---|
운영체제 7주차 강의 (0) | 2021.04.13 |
운영체제 4주차 강의 (0) | 2021.04.03 |
운영체제 3주차 강의 (0) | 2021.03.16 |
운영체제 2주차 강의 (0) | 2021.03.09 |