본문 바로가기

운영체제24

6.3. 프로세스 동기화 Process Synchronization 3 이화여자대학교 반효경 교수님의 운영체제 강의를 요약한 내용입니다. 틀린 부분이 있다면 지적해주시면 감사하겠습니다. 강의 링크 1. 동기화의 고전적인 문제들 1.1. Bounded-Buffer Problem (Producer-Consumer Problem) 버퍼의 크기가 유한하다. 공유 데이터 buffer 자체 및 buffer 조작 변수(시작 위치를 뜻함) 두 개의 프로세스 종류 : Producer, Consumer 각각 여러 개 Producer : 공유 버퍼에 데이터를 만들어서 집어넣는 역할 Consumer : 공유 버퍼에 데이터를 꺼내감 문제1 mutual exclusion -> bianry semaphore 같은 empty buffer에 Producer .. 2022. 8. 2.
6.2. 프로세스 동기화 Process_Synchronization 2 이화여자대학교 반효경 교수님의 운영체제 강의를 요약한 내용입니다. 틀린 부분이 있다면 지적해주시면 감사하겠습니다. 강의 링크 1. Semaphores 위키피디아 세마포어 두 개의 원자적 함수로 조작되는 정수 변수 공유 자원에 대한 접근을 제한하는 방법으로 사용 모든 교착 해결하진 않음. 추상 자료형의 일종. 프로그래머가 편리해짐. 1.1. busy waiting 이용한 구현 방식 lock/unlock 을 semaphore을 통해 가능 공유자원을 획득하고 반납하는 것을 처리해줌 아래 두 가지 연산은 atomic해야함. P 연산 공유데이터를 획득하는 과정 S값이 0이하면 while문을 돌다가 자원 생기면 가져감 마찬가지로 busy waiting 생김 V 연산 다.. 2022. 7. 30.
6.1. 프로세스 동기화 Process_Synchronization1 이화여자대학교 반효경 교수님의 운영체제 강의를 요약한 내용입니다. 틀린 부분이 있다면 지적해주시면 감사하겠습니다. 강의 링크 1. Synchronization의 필요 1.1. 데이터의 접근 이해를 돕기 위해 저장소를 Storage, 연산하는 곳을 Execution이라는 이름으로 임의로 지정한 상태이다. 컴퓨터 시스템에는 이런 구조가 자주 있다. 데이터가 저장된 곳에서부터 연산할 데이터를 받아서 연산을 하고, 다시 결과를 전달해주면 그것을 저장하는 것이다. 그림의 예시처럼 Memory, 디스크, 주소 공간 등의 경우이다. 여러 Execution박스가 Storage를 공유 시 문제가 생길 수 있다. 누가 먼저 읽어왔는가에 따라 결과가 달라질 수 있다. proces.. 2022. 7. 30.
5.2. CPU 스케줄링 CPU_Scheduling 2 이화여자대학교 반효경 교수님의 운영체제 강의를 요약한 내용입니다. 틀린 부분이 있다면 지적해주시면 감사하겠습니다. 강의 링크 1. Multilevel Queue 여러 줄로 cpu 사용을 기다린다 위로갈수록 우선순위가 높다. 우선순위가 높은 프로세스가 기다리고 있으면, 먼저 처리한다. 의문 프로세스를 어느 줄에 넣을 것인가? 무조건 우선순위 높은 프로세스만 우선하는가? 1.2. Multilevel Queue 예시 레디큐를 여러 개로 분할한다. -> interactive한 foreground와 interactive하지 않은 일괄처리를 하는 background 각 특성에 맞게 독립적인 스케줄링 알고리즘을 가지게 한다. 먼저 어느 줄에 cpu를 줄지 결정하고, 해당 줄에서 어느 프.. 2022. 7. 28.
5.1. CPU 스케줄링 CPU_Scheduling 1 이화여자대학교 반효경 교수님의 운영체제 강의를 요약한 내용입니다. 틀린 부분이 있다면 지적해주시면 감사하겠습니다. 강의 링크 1. CPU 스케줄링이란? CPU 스케줄링은 ready queue에 대기하는 프로세스 중 누구에게 CPU를 줄 것인가를 결정하는 작업이라고 한다. 컴퓨터 시스템 안에 있는 job들이 I/O bound job과 CPU bound job이 섞여 있어서 스케줄링이 필요하다. 크게 두 가지 이슈로 보자면, 먼저, 당장 어떤 프로세스에게 CPU를 줄 것인지를 결정해야 한다. 그리고 특정 프로그램에 CPU를 준 다음에는 CPU를 특정 시점에 가져갈 것인지, 해당 작업을 끝낼때까지 기다릴 것인지도 결정을 해야한다. 1.1. CPU burst, I/O burst C.. 2022. 7. 27.
4.2. 프로세스 관리 Process Management 2 이화여자대학교 반효경 교수님의 운영체제 강의를 요약한 내용입니다. 틀린 부분이 있다면 지적해주시면 감사하겠습니다. 강의 링크 1. 프로세스 관련한 시스템 콜 유닉스의 경우 fork() -> exec() 를 통해 자식 프로세스를 생성한다. 사용자 프로세스가 직접 못하고, 운영체제를 통해서만(시스템콜) 복제할 수 있다. 1.1. fork() 새거 만듦 fork()를 하면 해당 코드의 처음부터 실행되는 것이 아닌, fork()한 바로 다음 시점부터 실행된다. 부모의 fork 시점의 context를 복제했기 때문이다. 복제된 프로세스와 원본을 착각하지 않기 위해 장치가 마련되어 있다. 위 이미지를 보면, fork()함수의 return value(pid)로 부모 프로세스와 자.. 2022. 7. 26.