Operating System

Pinned ·

Secondary-Storage Structure

Overview of Mass Storage Structure 많은 Secondary Storage가 존재하지만 본 절에서는 HDD등 Magnetic disk에 대해서 다룬다. 아래는 기본적인 하드디스크의 구조이다. I/O에 소요되는 시간은 아래와 같이 나타낼 수 있다.$$T_{I/O} = T_{seek} + T_{rotation} + T_{transfer}$$ I/O 소요시간 = 탐색시간 + 회전시간 + 전송시간 이 중에서 운영 체제 범위에서 줄일 수 있는 것은 탐색시간 밖에 없다.…

Pinned ·

Virtual Memory Management Strategy(2)

Thrashing 프로세스에 충분한 page frame이 할당되지 않으면 page fault rate가 높아지게 된다. page fault가 발생하게 되면 새로운 페이지를 로드하기 위해 기존의 프레임을 backing store에 swap out해야 한다. 하지만 다시 이 데이터를 필요로 할 경우 또 swapping이 일어나게 된다. 이러한 악순환은 CPU utilization을 낮추게 된다. 이에 운영체제는 multiprogramming의 강도를 높여 CPU utilization을 높이려고 시…

Pinned ·

Virtual Memory Management Strategy(1)

Virtual Memory overview 어떤 프로그램이 실행될 때 그 프로그램 전체가 로딩될 필요는 없다. 에러 코드 및 그 처리에 관한 코드는 에러가 발생했을 때 로딩해도 된다. Array, lists, table등은 실제 필요한 것보다 매우 큰 메모리 할당을 요구한다. (dynamic loading) 프로그램의 option을 포함한 특정 기능들은 잘 사용되지 않거나 거의 사용되지 않을 수 있다. 하드디스크에서 메모리로의 load는 많은 오버헤드가 발생하므로, 당장 필요한 코드만 loa…

Pinned ·

Memory Management(2)

Memory Allocation Schemes - Continuous Memory Allocation MMU에서 limit register, relocation register를 사용하여 프로세스 단위로 메모리 할당. 메모리 상에서 free space(hole)를 탐핵하여 프로세스를 할당한다. partition이 늘어나면 memory management관점에서 multiprogramming이 제한된다. 프로세스가 할당되기에 충분한 hole에 프로세스를 할당한다. first-fit : 메모리…

Pinned ·

Memory Management(1)

Synchronization, Deadlock 에서는 프로세스의 자원 공유에 관해 다뤘다면, 이번 글에서는 메모리 공유에 대해 다룬다. Memory Management Backgrounds Address Space 운영 체제가 생성하는 physical memory의 추상체가 Address Space이다. Program Code, Heap, Stack영역으로 구분된다. Program Code : 명령…

Pinned ·

Deadlock(2)

Deadlock Handling - Deadlock Prevention deadlock condition중 최소 한 가지 이상의 조건을 만족하지 않도록 설정하여 deadlock을 예방하는 방법 Computational Overhead가 너무 커서 실제로 사용하지는 않는다. 본 절에서는 방법론에 대해서만 다룬다. Mutual Exclusion shared resources를 require하지 않고 nonsharable resource만 hold하는 방법으로 구현한다. 일반적으로 Mutual …

Pinned ·

Deadlock(1)

Deadlock - Deadlock conditions 프로세스는 한정적인 resource를 사용한다. 이때 다른 프로세스가 사용중인 resource를 요구할 수 있다. 이 때 발생하는 문제에 대해 좀 더 직관적으로 살펴보기 위해 system model관점에서 살펴보자. System Model 시스템은 resource와 process로 구성된다. resource들은 Resource Type으로 분류한다.(R1, R2, R3, ... , Rm) 각 Resource Type들은 CPU cyc…

Pinned ·

Nachos(2)

#1 코드 selfTest2 메소드와 SimpleThread클래스를 아래와 같이 작성하여 Round-Robin 스케줄링을 구현할 수 있다. selfTest2() public static void selfTest2() { Lib.debug(dbgThread, "Enter KThread.selfTest2"); int timeslice; int numberOfThreads; int burstTime1; int burstTime2; String fileName = &q…

Pinned ·

Synchronization(2)

Synchronization Hardware Lock critical section으로 진입하지 못하도록 key를 이용하여 lock하는 것 hardware의 atomic instruction을 사용하여 구현한다. 대부분의 현대 기기들은 atomic hardware instruction을 지원한다. high level코드를 non-interruptable하게 만드는 역할을 한다. test와 set를 사용하여 구현하거나 swap을 이용하는 방법으로 lock을 구현한다. test, set, swa…

Pinned ·

Synchronization(1)

Critical Section Problem The Problem of Concurrency(동시성 문제) 아래와 같은 프로그램에서, OS는 한 번에 여러 작업에 대해서 연산한다.(juggling)#include <stdio.h> #include <stdlib.h> #include "common.h" volitale int counter = 0; int loops; void worker*(void * arg) { int i; for(i = 0; i…

Pinned ·

운영체제 2023-04-10 수업정리

Flow CPU scheduling Exercise CPU scheduling Exercise #1 #1 answer #2 #2 answer #3 #3 answer

Pinned ·

운영체제 2023-04-05 수업정리

Flow FCFS Scheduling SJF Scheduling Priority Scheduling Round-Robin Scheduling Multilevel Queue Scheduling FCFS Scheduling 먼저 도착한 프로세스를 먼저 처리하는 Scheduling Algorithm non-preemptive scheduling algorithm이다. 장점(?) 구조가 단순하여 구형하기가 매우 쉽다. Straving이 발생하지 않는 구조이다. 따라서 모든 프로세스의 실행이 보장…

Pinned ·

운영체제 2023-04-03 수업정리

Flow Review Terminologies Basic Concepts Review Process 실행 중인 프로그램 실행 중인 프로그램의 상태 정보(PC, pid 등)는 PCB라는 자료구조에 저장한다. PCB : Process Control Block, TCB라고도 한다. Process의 실행 정보를 Context라고 하고, 이를 교체하는 것이 Context-Switching이다. ready -> running Context Switching이 일어나면 Idle time에…

Pinned ·

Nachos(1)

#1 KThread.java의 389행의 run함수를 고쳐서 각 Thread가 10번 실행되도록 할 수 있다. public void run() { for (int i=0; i<10; i++) { System.out.println("*** thread " + which + " looped " + i + " times"); currentThread.yield(); } } 실행 결과 #2 KThread.fork() 코드 …

Pinned ·

운영체제 2023-03-29 수업정리

Flow Thread & Multithreaded Process Multicore Programming Process vs Thread Multithreading Models Virtualization Thread Thread Software적으로 병렬화를 제공하는 방법이다. CPU Utilization의 기본 단위이다. Single Processer환경에서도 Thread를 이용하면 Concurrency를 보장하여 한 번에 여러 동작을 하는 것처럼 보이게 할 수 있다. Thre…

Pinned ·

운영체제 2023-03-27 수업정리

Flow IPC IPC - Shared Memory IPC - Message Passing Examples of IPC Systems Communications in Client-Server Systems IPC IPC(Inter Process communication) 시스템에 속한 프로세스들은 independent일수도 있고, cooperating일수도 있다. Reason for Cooperating Process 정보의 공유 계산속도 향상 모듈화 편의성 cooperating프로세…

Pinned ·

운영체제 2023-03-22 수업정리

Flow Process scheduling Scheduler Process creation & termination Process scheduling 주어진 실행 가능한 프로세스 목록 중에서 어떤 프로세스를 실행할 것인지 정하는 규칙 빠르고 빈번하게 일어난다. 이런 규칙은 크게 아래와 같이 분류할 수 있다. non-preemptive scheduling 실행 중인 프로세스에서 CPU 자원을 해제할 때까지 기다려야 한다.(yeild()) 프로세스 간 조율이 중요하다. preem…

Pinned ·

운영체제 2023-03-20 수업정리

Flow Process creation hierarchy termination state Implementing Process Context Switch Process 프로세스란? Program in execution, 즉 실행 중인 프로그램을 프로세스라고 말한다. 프로세스는 아래를 포함한다. CPU contexts(registers) -> 연산상태 저장 Program Counter, Stack Pointer -> 프로그램 실행 정보 OS resources(주소 공간, …

Pinned ·

운영체제 2023-03-15 수업정리

Flow System Call Operating System Structure System Call Operating-System Services User mode에서 실행되는 프로그램이 자원 할당, 처리 요청 등 Kernel의 서비스를 이용할 경우 System Call을 사용한다. User mode에서의 요청인 System Call이 발생하면 운영 체제는 이를 처리해 준다. 당연하지만 운영체제마다 제공하는 System Call API는 모두 다르다. 같은 역할을 하더라도 이름이나 구현…

Pinned ·

운영체제 2023-03-13 수업정리

Flow Storage Computer System Architecture 운영 체제는 무엇을 하는가? 운영 체제 설계의 목표 Storage 주 메모리인 메인 메모리(휘발성), secondary storage인 비휘발성 storage가 존재한다. 아래와 같은 계층 구조를 가진다. 그림에서 레지스터와 캐시는 운영 체제에서 관리하지 않는다. 운영 체제에서 관리하는 메모리 영역은 메인 메모리부터 2차 저장소 까지의 영역이다. I/O Device 일반적인 컴퓨터의 구조는 아래와 같이 나타낼 …

Pinned ·

운영체제 2023-03-08 수업정리

Flow 운영 체제의 정의 및 primary components 컴퓨터의 부팅 과정 System Call Virtualization Persistence 운영 체제의 정의 & primary components 현대 컴퓨터 시스템은 사용자, 소프트웨어 영역, 운영 체제, 하드웨어 영역으로 나눌 수 있다. 운영 체제는 소프트웨어 어플리케이션이 하드웨어 자원을 효율적으로 사용할 수 있도록 하는 소프트웨어이다.(제한된 HW자원을 효율적으로 프로세스에 할당한다.) resource alloca…