꾸준하게 기록하기
article thumbnail
IPC 기법
CS/운영체제 2022. 2. 24. 11:33

파이프 (pipe) - 기본 파이프는 단방향 통신 - fork() 로 자식 프로세스 만들었을 때, 부모와 자식간의 통신 가능 → 부모 프로세스에서 fd[0]으로 read 할 수 없고 자식 프로세스에서 fd[1]으로 write 할 수 없다. → 자식에서 부모로 갈 수 없다. → 데이터는 커널 공간에 있다. → 파이프는 pipe(fd) fd 인자를 정수 배열로 줬음 (fd[2] => fd[0], fd[1] 이 있는 상태) fd 에 파이프가 정상적으로 생성되면 특정한 주소값을 2개 준다. fork() 실행 : 프로세스 2개 생김. fd 주소값 변하지 않는다. 부모프로세스에서 데이터를 쓴다.(write), fd[1] 써야하고, 자식프로세스에서는read함수를 쓰고 ,fd[0] 쓰고 공란 buf 변수를 사용 → 부..

article thumbnail
프로세스 간 커뮤니케이션
CS/운영체제 2022. 2. 24. 11:12

InterProcess Communication (IPC) : 프로세스 커뮤니케이션 기법 프로세스간 커뮤니케이션은 원칙적으로 금지되어있다. → 프로세스의 코드가 다른 프로세스의 코드나 데이터를 바꿀 수 있는 방법 x → 프로세스는 다른 프로세스 공간에 접근할 수 없다. 그래서 프로세스 간에 커뮤니케이션을 해야될 필요가 있어 IPC 기법을 제공하는 것이다. → 동시에 실행된 결과들을 특정 프로세스가 모아서 정리해야 되고 각각의 프로세스간 통신 필요한 경우 있다. ex. fork () 시스템 콜 → fork 함수로 프로세스 자신을 복사해서 새로운 프로세스로 만들 수 있다. 기본적으로 프로세스 생성시, 리눅스(유닉스 계열)에서는 최초 프로세스를 제외하고는, fork() 시스템콜을 사용해 부모 프로세스를 복사하..

article thumbnail
컨텍스트 스위칭
CS/운영체제 2022. 2. 23. 17:54

컨텍스트 스위칭 동작 원리 스케쥴러가 프로세스 A에서 B로 바꿀 때 PCB라는 별도의 저장 메모리 공간을 만들어서 프로세스 A의 PC(Program Counter), SP(Stack Pointer) 값을 저장, A는 ready or block 상태로 변경되고 B 실행 PCB ( Process Control(Context) Block ) 1. Porcess ID 2. Register 값 (PC, SP 등) 3. Scheduling Info (Process State) : 지금 프로세스 상태가 ready, block, running 인지 4. Memory Info(메모리 사이즈 limit) → PCB 는 프로세스가 실행중인 상태를 캡쳐/ 구조화해서 저장 ( PCB 는 프로세스의 상태를 저장하는 데이터 구조로..

article thumbnail
프로세스 구조
CS/운영체제 2022. 2. 23. 17:40

프로세스와 컨텍스트 스위칭 컨텍스트 스위칭이란? : 프로세스 A가 실행하다가 어느순간 스케쥴러가 프로세스 B로 변경하는데 이런 바꿔주는 매커니즘을 컨텍스트 스위칭이라 한다. 프로세스는 일반적으로 어떻게 구성되어 있을까? text(CODE): 컴파일된 소스 코드가 저장 data: 프로그램 실행에 필요한 데이터가 저장되며, 주로 소스코드에서 선언된 전역변수가 저장 stack: 임시 데이터(함수 호출, 로컬 변수 등)가 저장 heap: 함수가 동작하기 위해서 쓴 자료구조, 함수 실행에 필요한 자료를 저장 Program Counter + Stack Pointer 다음 실행할 명령어의 주소를 가지고 있는 레지스터 : PC(Program Counter) 함수가 실행될때 가장 최상단 주소를 가르키는 레지스터 : St..

article thumbnail
인터럽트 내부 동작
CS/운영체제 2022. 2. 23. 17:20

시스템 콜 인터럽트 시스템 콜을 실행하기 위해서는 강제로 코드에 인터럽트 명령을 넣어, CPU에게 실행시켜야 한다. - 시스템 콜 실제 코드 eax 레지스터에 시스템 콜 번호를 넣는다. ( 시스템 콜은 각각의 번호가 있음 ) ebx 레지스터에는 시스템 콜에 해당하는 인자값을 넣는다. 소프트웨어 인터럽트 명령을 호출하면서 0x80(인터럽트 번호 - 시스템콜은 0x80 으로 정해둠) 값을 넘겨 준다. cf ) 무조건 마지막에 CPU 제공하는 op code 중 int 명령어 들어감 cf ) 다른 인터럽트와 다르게 ( 원래 인터럽트는 외부에서 코드와 별개로 실행) 코드안에서 강제로 실행 인터럽트와 시스템 콜 ● 시스템콜 인터럽트 명령을 호출하면서 0x80(인터럽트 값) 값을 넘겨줌 1. CPU는 사용자 모드를 ..

article thumbnail
인터럽트
CS/운영체제 2022. 2. 23. 16:08

인터럽트란? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술 어느 한순간에 CPU가 실행하는 명령은 하나! CPU가 처리하는 코드 이외에 외부에서 이벤트가 발생하는 경우 CPU에 알려주는 기술 인터럽트 필요한 이유 1. 선점형 스케줄러 구현 : 프로세스 running 중에 스케줄러가 이를 중단시키고 다른 프로세스로 교체하기 위해 현재 프로세스 실행을 중단시킴. 그러려면 스케줄러 코드가 실행이 되서 현 프로세스 실행을 중지시켜야함 ( 인터럽트 기술을 이용해 중지 ) 2. IO Device와의 커뮤니케이션 : 저장매체에서 데이터 처리완료시, 프로세스에 알려줘야함 → 인터럽트 기술이 알려줌 (block state ..

article thumbnail
선점형과 비선점형 스케쥴러
CS/운영체제 2022. 2. 23. 14:22

선점형과 비선점형 스케쥴러 선점형 스케쥴러 : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있다. 비선점형 스케쥴러 : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없다. ( CPU 에서 실행중인 프로세스가 wait 이나 end 상태가 되야 스케줄러가 다른 프로세스를 실행 시킬 수 있다.) 선점형과 비선점형 스케쥴러 차이 비선점형 : 프로세스가 자발적으로 blocking상태로 들어가거나 실행이 끝났을 때(end)만 다른 프로세스로 교체 가능. 스케줄러 선점(점유,제어) 하지 못한다. 선점형 : 프로세스 running 중에 스케줄러가 이를 중단 시키고 다른 프로세스로 교체 가능 선점형이 조금 더 응답시간 빠르고 운영체제가 더 최적의 스케줄링 가능하다. 선점형..

article thumbnail
프로세스 상태와 스케쥴러
CS/운영체제 2022. 2. 23. 14:02

멀티 프로그래밍과 Wait wait : 간단히 저장매체로부터 파일 읽기를 기다리는 시간으로 가정 멀티 프로그래밍 : CPU 활용도를 극대화하는 스케줄링 알고리즘 ① 일 때는 프로세스 A를 선택 (B나 C는 wait 상태이므로) ② 일 때는 프로세스 B를 선택 (A나 C는 wait 상태이므로) ③ 일 때는 프로세스 C를 선택 (A나 B는 wait 상태이므로) Scheduler 는 특정 시점에 어떤 프로세스가 실행이 가능하고 아닌지 미리 파악하고 있어야 한다. 빨간색 화살표 시간에 프로세스 A, B, C 모두가 실행되면서 CPU 활용도는 100% 어떤 시점에 어떤 프로세스를 CPU에 넣을지 결정하는데 있어서 프로세스 상태가 중요한 요소이다. 주요한 요소 프로세스 상태 정보(ready,running,block..

728x90