CS107 [OS] Memory Management - 2 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Paging logical memory는 페이지 단위로 분할이 되고, 물리적 메모리는 프레임 단위로 분할이 되어 서로 매칭된다. 이때 논리적 주소를 물리적 주소로 변환하기 위해 페이지 테이블을 활용한다. 1 - 1) 주소 변환 기법 페이징 기법에서는 CPU가 사용하는 논리적 주소를 페이지 번호(p)와 페이지 오프셋(d)으로 나누어 주소 변환에 사용한다. 페이지 번호는 각 페이지별 주소 변환 정보를 담고 있는 페이지 테이블 접근 시 인덱스로 사용되고, 해당 인덱스의 항목에는 그 페이지의 물리적 메모리 상의 기준 주소, 즉 시작 위치가 저장된다. 따라서 특정 프로세스의 p번째 페이지가 위치한 물리적 메모리의 시작 위치를 알고 싶다면 .. CS/OS (2022-1) 2022. 11. 30. [OS] Memory Management - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Logical vs Physical Address 1 - 1) Logical Address 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 논리적 주소이다. 1 - 2) Physical Address 메모리에 실제로 올라가는 위치이다. 보통 메모리의 낮은 주소 영역에는 운영체제가 올라가고, 높은 주소 영역에는 사용자 프로세스가 올라간다. 1 - 3) Address Binding 프로세스의 논리적 주소를 물리적 메모리 주소로 연결하는 작업을 말한다. Process마다 독자적인 논리적 주소가 있지만, 실제로 실행되기 위해서는 물리적 메모리에 올라가야 하기 때문에 이에 대한 변환이 필요하다.. CS/OS (2022-1) 2022. 11. 29. [OS] Deadlock 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 이번 시간에는 서로가 필요로 하는 자원을 가지고 있어 어느 한쪽도 실행되지 못하고 기다리는 DeadLock에 대하여 알아보자. 1. DeadLock 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태를 말한다. 예를 들면 다음 그림과 같다. 1 - 1) Resource (자원) 하드웨어, 소프트웨어 등을 포함하는 개념으로, 다음과 같은 예시들이 있다. ex) I/O device, CPU cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차는 우측과 같다 -> Request, Allocate, Use, Release 1 - 2) 예시 1번째 예시 시스템에 2개의 tape drive가 있.. CS/OS (2022-1) 2022. 11. 29. [OS] Process Synchronization - 3 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 이번 시간에는 Process 동기화와 관련된 고전적인 3가지 문제에 대하여 학습해보자! 3. Bounded-Buffer-Problem (Producer-Consumer Problem) 생상자, 소비자 문제에 대하여 알아보자. 공유 데이터 buffer 자체 및 buffer 조작 변수 (empty / full buffer의 시작 위치) Producer (생산자) 생산자는 여러개가 있을 수 있다. 하는 역할은 공유 Buffer에 데이터를 삽입하는 역할을 한다. Empty 버퍼가 있는지 확인한다. (없으면 기다림) 공유 데이터에 lock을 건다. Empty 버퍼에 데이터를 입력하고 버퍼를 조작한다. lock을 푼다. Full 버퍼가 하나 증가.. CS/OS (2022-1) 2022. 11. 28. [OS] Process Synchronization - 2 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 이번 시간에 배웠던 세마포어는 추상 자료형(ADT)이다, Java로 생각하면 interface 정도가 될것 같다. 즉, 구현 세부사항이 아닌, 인터페이스를 생각하면 된다. 1. 세마포어 (Semaphore) 우선 세마포어 변수 S에 대하여 알아보자! Integer variable : S를 사용함. 쉽게 생각하면 사용 가능한 자원의 수 라고 생각하면 된다. 세마포어 연산은 아래의 두 가지 atomic 연산에 의해서만 접근이 가능 ▶ P(S): 공유 데이터를 획득하는 과정 (lock)으로 S가 양수이어야 한다. // P(S) while (S CS/OS (2022-1) 2022. 11. 25. [OS] Process Synchronization - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Critical Section 문제를 해결하기 위한 충족 조건 ▶ 상호 배제 (Mutual Exclusion) 어떤 프로세스가 임계 구역 부분을 수행 중이면 다른 모든 프로세스는 그의 임계 구역에 들어가면 안 된다. 즉, 상호 배타적이여야 한다. ▶ 진행 (Progress) 아무도 임계 구역에 있지 않은 상태에서 임계 구역에 들어가고자 하는 프로세스가 있으면 임계 구역에 들어가게 해 주어야 한다. ▶ 유한 대기 (Bounded Waiting) 프로세스가 임계 구역에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 임계 구역에 들어가는 횟수에 한계가 있어야 한다. ex) 세 개의 프로세스가 있을 때 두 개의 프로.. CS/OS (2022-1) 2022. 11. 25. [OS] CPU Scheduling - 2 & Process Synchronization 도입 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 3 - 5) 멀티 레벨 큐 (Multi-Level Queue) 우선 순위에 따라 여러 개의 Ready Queue로 분할하는 방식이다. 어느 줄에게 Process를 집어넣을지 결정하고, 줄이 결정되면 그 줄 안에서 누구에게 CPU를 줄지 결정하게 된다. 예를 들어 다음과 같이 level을 2개 갖도록 만들수가 있다. 다음을 살펴보자! Ready Queue를 foreground와 background 큐로 나눌 수 있다. (누구에게 CPU를 줄지) foreground(interactive) background(batch) Ex) 백그라운드 큐는 FCFS 알고리즘에 의해 스케줄 되는 반면, 포그라운드 큐는 RR 알고리즘에 의해 스케줄 될 수 .. CS/OS (2022-1) 2022. 11. 24. [OS] CPU Scheduling - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. CPU burst와 I/O burst 일반적으로 다음과 같아 cpu burst 와 I/O burst가 번갈아 가면서 CPU가 사용된다. 이처럼 사용자 프로그램이 수행되는 과정은 CPU 작업과 I/O 작업의 반복으로 구성된다. 1 - 1) CPU burst CPU burst는 사용자 프로그램이 CPU를 가지고 빠른 명령을 수행하는 단계이다. 이 단계에서 사용자 프로그램은 CPU 내에서 일어나는 명령 (ex. Add)이나 메모리(ex. Store, Load)에 접근하는 일반 명령등 을 사용할 수 있다. 1 - 2) I/O burst I/O burst는 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계이다. 이 단계에서는 모든 입출.. CS/OS (2022-1) 2022. 11. 23. [OS] Process Management 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Process의 관리 1 - 1) 프로세스 생성 운영체제가 최초의 프로세스를 생성하면, 이미 존재하는 프로세스가 다른 프로세스를 복제 생성한다. 이때 기존 프로세스를 부모 프로세스라 하고, 새로 생긴 프로세스를 자식 프로세스라고 부른다. 프로세스의 트리 (계층 구조)를 형성한다. 프로세스는 자원을 필요로 한다. 운영체제에게 받는다. 부모와 공유한다. 자원의 공유 (3가지 모델이 가능하다) 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 수행 (Execution) 부모와 자식이 공존하며 수행하는 모델 (이때는 부모와 자식이 CPU를 획득하기 위해 경쟁하는 관계가 됨) 자식이 종료(termina.. CS/OS (2022-1) 2022. 11. 22. [OS] Process - 2 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Thread 란? Process 내에서 실행 되는 여러 흐름의 단위 혹은 프로세스가 할당 받은 자원을 이용하는 실행 흐름의 단위를 뜻한다. 하나의 Process내에서 동일한 코드를 실행하고 싶은경우 Thread를 여러개 생성하여 작업을 시킨다. Thread를 경량 프로세스(light weight process)라고 부르기도 한다. 각각의 Thread 들은 다음 3가지를 제외하고는 Process의 것을 공유하여 사용한다. program counter register set stack space 각 Thread별로 자신의 stack, register, PC를 가지게 된다. 1 - 1) Thread가 다른 Thread와 공유하는 부분 .. CS/OS (2022-1) 2022. 11. 21. [OS] Process - 1 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. Process란? Process is a program in execution 즉, Process는 실행 중인 프로그램이다! 디스크에 실행 파일 형태로 존재하던 프로그램이 메모리에 올라가서 실행되기 시작하면 비로소 실행 가능한 프로세스가 되는 것이다. 2. 프로세스의 문맥(context) 프로세스가 시작해서 종료될 때 까지 CPU에서 명령을 한꺼번에 수행하면 좋겠지만, 여러 프로세스가 함께 수행되는 시분할 환경에서는 프로세스는 CPU를 빼앗기고 획득하는 과정을 반복하게 된다. 따라서 CPU를 빼았겻따가 다시 획득해 이전에 수행하던 일을 재개하는 시점이 되면, 이전 CPU 보유 시기에 어느 부분까지 명령을 수행했는지 정확한 상태를 .. CS/OS (2022-1) 2022. 11. 21. [OS] System Structure & Program Execution 2 본 글은 반효경 교수님의 운영체제 강의를 들으며 정리하는 글 입니다. 1. 동기식 입출력과 비동기식 입출력 1 - 1) 동기식 입출력 vs 비동기식 입출력 바로 위 그림은 동기식(Synchronous)입출력과 비동기(Asynchronous)식 입출력의 비교해 보여 준다. 사용자가 입출력 요청을 하면 동기식 입출력에서는 먼저 운영체제의 커널로 CPU의 제어권이 넘어가서 입출력 처리와 관련된 커널의 코드가 수행된다. 이때 입출력을 호출한 Process의 상태를 Blocked 상태로 바꾸어 요청한 입출력이 완료될 때까지 CPU를 할당받지 못하게 된다. 입출력이 완료되면 I/O 컨트롤러가 CPU에게 인터럽트를 발생시켜 입출력이 완료되었음을 알려주고, Blocked 상태인 해당 프로세스에게 CPU를 할당받을 수 .. CS/OS (2022-1) 2022. 11. 20. 이전 1 2 3 4 5 ··· 9 다음