컴퓨터 시스템은 크게 3가지 요소-소프트웨어, 하드웨어, 운영체제-로 이뤄진다. 소프트웨어에는 대표적으로 어플리케이션이, 하드웨어에는 대표적으로 CPU/Memory/주변장치가 있다. 주변장치에는 Network Device, I/O Device, Storage Devic
운영체제의 정의1) 운영체제란, 하드웨어와 유저 간의 '인터페이스'이다. 2) 운영체제는 컴퓨터 자원(하드웨어, 소프트웨어 리소스)를 공유하는 활동의 관리와 조정을 책임진다.3) 운영체제는 컴퓨팅 어플리케이션들의 호스트로서 역할을 한다.운영체제는 주인이고, 어플리케이션
= CUI (Character User Interface)과거에 사용한 유저 인터페이스명령어 인터페이스는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역
단일 사용자만 지원하는 시스템MS DOS, MS WINDOWS 95 등그 시스템 안의 하드웨어를 다른 사용자와 공유하지 않고 한 사용자에게 소속된다.보호 메커니즘이 단순하다.대개 micro-computer 혹은 개인 personal compuer에 이용된다.기기 하나를
운영체제의 구조운영체제는 커널과 utility로 구성되어 있다.1) Kernel= Nucleus, supervisor program, resident program, control program운영체제의 자주 사용되는 기능들은 대부분 커널에 들어 있다.프로세스, 리소스
CPU는 두개의 서로 다른 모드를 갖는다. 따라서 CPU에는 CPU Mode를 표현하는 1-bit 레지스터가 있다. User Applicaiton이 실행되고 있을 때 CPU는 User Mode이다. Kernal Code가 실행되고 있을 때 CPU는 Kernel Mod
하드웨어 가상화 = Hardware Virtualization, Platform Virtualization1) 하드웨어 가상화, 플랫폼 가상화란 가상 머신을 생성하는 기술이다. 가상 머신이란 운영체제를 가지고 있는 실제 컴퓨터 시스템처럼 동작하는 것을 의미한다. 가상
클라우드 컴퓨팅의 정의는 개인이 가진 단말기를 통해서는 주로 입/출력 작업만 이루어지고, 정보분석 및 처리, 저장, 관리, 유통 등의 작업은 클라우드라고 불리는 제3의 공간에서 이루어지는 컴퓨팅 시스템 형태라고 할 수 있다.많은 컴퓨터 시스템 자원들을 구름(클라우드)처
1\. Process1) Job액셀, 워드 등 설치된 어플리케이션을 'Application', 'Job'이라고 한다. 시스템에 설치되어 있는 '실행파일'로서, 디스크에 정적으로 존재보조기억장치 공간을 사용하고 있을 뿐, CPU/IO 등 다른 자원을 사용하지 않는다.실행
프로세스의 상태프로세스가 어떠한 리소스를 사용 중인지(할당받았는지)할당받지 못했다면, 어떠한 리소스를 요청 중인지프로세스의 State는 프로세스와 리소스 간의 Interaction에 의해 결정된다.1) 사용자의 요청에 의해 프로세스 생성앱을 사용자가 터치 혹은 클릭하여
Ready 상태의 프로세스Ready 상태의 프로세스들은 매우 많을 수 있다.CPU가 하나라면 Running 상태의 프로세스는 하나이지만, Ready 상태는 여러개 있을 수 있다.이러한 프로세스들을 잘 줄을 세우기 위해서 'Ready Queue'(=Ready List)를
Process 간 Cooperation이 필요한 이유하나의 Application을 보다 효과적으로, 빠르게 수행하기 위해 혹은 한 Application에 대해 정보를 공유하기 위해 여러 프로세스가 필요한 경우가 있다. Application이 Modularity를 고려하
MultiProgramming1) 하나 이상의 프로세서(cpu)에서, 두 개 이상의 프로세스가 존재하는 시스템\-CPU의 개수가 1개이던, 2개이던 상관없이 여러개의 프로세스가 같이 운용되고 있는 환경을 '멀티프로그래밍' 시스템 이라고 한다.컴퓨터의 중요한 자원인 CP
어떤 기준으로 프로세스를 평가하고, 스케줄링 순서를 정해줄까?I/O Bound Process : cpu 사용보다는 입출력을 많이 하는 프로세스CPU Bound Process (=Compute-bound) : cpu를 많이 사용하고, 연산을 많이 하는 프로세스하나의 시스
> ### FCFS와 RR은 'Arriving Time'을 기준으로 하는 스케줄링 기법이다. 1. FCFS (First-Come-First-Service) = FIFO 1) 비선점형 스케줄링 Time quantum 없는 스케줄링 기법이다. 더 높은 우선순위의 프
Time quantum 개념이 존재하지 않는다.Ready queue에 도착한 시간은 고려하지 않고, ready queue에 있는 프로세스들 중 burst time이 짧은 프로세스부터 스케줄링한다.SPN 기법으로 스케줄링을 하면, Waiting Time의 평균이 최소화된
프로세스마다 우선순위가 부여되고, 우선순위가 높은 프로세스를 스케줄링하게 된다.만약 우선순위가 같을 경우에는 FCFS로 스케줄링운영체제에 따라서 우선순위가 부여되는 방식이 다르다.우선순위 값(Numerical value)이 시스템마다 다르다.ex) MS Windows
UNIX 운영체제1) Time Sharing System, 즉 Interactive System 이다. 여러명의 사용자가 단일 컴퓨터 시스템을 동시에 사용하는 환경을 가정하기 때문에, time quantum이 기반 된 스케줄링2) 우선순위 기반의 스케줄링프로세스의
Multi-Core Processor SchedulingEx) SMP와 같은 구조, 멀티 코어 프로세서의 경우 어떤 스케줄링을 사용해야 할까?!1) 멀티코어 프로세서하나의 Physical Chip 안에, 여러개의 프로세서 코어가 있어서 병렬 처리가 가능한 형태각 코어는
➡️ 프로세스가 (1) 공유자원(ex. cpu)에 접근하려고 할 때나, (2) 공유 데이터에 동시에 접근하려고 할 때(여러 개의 프로세스들이 logical address space를 공유하면서 데이터에 접근하려고 할 때)공유 데이터의 대표적 예시는 '커널 데이터' 이다
Two Process Mutual Exclusion1) version 1p0과 p1 두 개의 프로세스만 존재한다고 가정해 보자.둘 다 Critical Section에 진입하려 하는 상황이다.'turn' 변수는 0/1의 값을 가지는데, 0이면 p0이 진입할 수 있고 1이
Mutual Exclusion을 위한 하드웨어적 지원은 어떤 것을 할 수 있을까?!1) SW 해결방식의 문제Dekker, Peterson, Digkstra 등 여러 알고리즘은 소프트웨어적으로 Mutual Exclusion 문제를 해결하기 위한 것인데, while문을 돌
Process의 busy waiting을 방지하는 방법Semaphore1) 정수형 변수2) 아무나 접근하지 못하는 Protected 변수 (Encapsulation)P, V, 초기화 Operation 3가지 만이 접근 가능하다.3) Semaphore 변수 s가 생기면,
Semaphore을 이용하여 다음과 같은 다섯 가지 문제를 해결할 수 있다.Mutual Exclusion을 semaphore로 해결하기p1~pn개의 총 n개의 프로세스가 있을 때, active라는 semaphore 변수가 있다.semaphore을 mutual exclu
특정 Data를 읽어가기만 하는 'reader process' 과, 쓰기만 하는 'writer process'들이 있다.Reader들은 해당 데이터에 동시 접근이 가능하다.Writer은 한번에 한번만 데이터를 접근해야 한다.(다른 writer과 혹은 다른 reader와
1) No busy waitingBusy Waiting 과정이 없다.Critical Section의 진입을 위해서 Loop을 돌지 않는다.2) No scheduling for wakeupWakeup을 할 때 스케줄링을 하지 않는다. 여러개의 process가 queue에
프로세스는 특정 이벤트(particular Event)를 기다리고 있다.Ex) 입출력이 끝났다는 시그널을 기다리고 있는 것Ex) semaphore의 lock이 풀렸다는 시그널을 기다리고 있는 것➡️ 프로세스가 절대 일어나지 않을 이벤트를 기다리고 있다면 그 프로세스는
한 프로세스가 자원을 할당받고 사용중이면 다른 프로세스는 할당받지 못하기 때문에 교착 상태가 발생한다. 두 개 이상의 프로세스가 함께 사용할 수 있다면(배타적 자원이 아니라면) 기다릴 필요가 없으므로, 교착상태로 이어지지 않을 것이다. 선점하지 못하는 자원이 존재하기
Deadlock을 해결하기 위한 방법으로 Prevention, Avoidance, Detection/Recovery 방법이 있다. 1) Deadlock Prevention Methods🌳 4가지 필요 조건 중 하나를 제거함으로써, 아예 교착 상태가 발생하지 못하도록
✔️ 컴퓨터의 시스템 자원의 상태를 지속적으로 모니터링한다.✔️ 항상 각 리소스를 각각의 프로세스에게 특정 순서로 할당하여 deadlock을 피하도록 만드는 "안전 상태"에 있도록 만든다.📌 안전 상태란 무엇인가?! 안전한 상태란, 모든 프로세스들이 정상적으로 종료할
(노드가 두 그룹으로 분리되고, 간선은 같은 그룹이 아닌 다른 그룹 사이에만 생성된 그래프)(P, R) : edge를 request한 edge(R, P) : Allocation된 edge모든 자원의 타입에 대해서 t라는 변수가 존재하는데, 해당 자원의 unit 개수를
어쩔 수 없이 복구를 위해서, 프로세스가 강제로 비정상 종료함으로써 교착상태가 풀리도록 한다.교착 상태에 있는 프로세스에게 자원을 강제로 제공함으로써 교착상태가 풀리도록 한다. (대부분 다른 프로세스에게서 빼앗아서 주는데, 이 경우 다른 프로세스가 잘못 종료될 수도 있
1) CPU 레지스터2) Cache 메모리3) 주기억장치 (Main Memory)4) 보조기억장치(Secondary Memory = Auxiliary Memory)오른쪽으로 갈 수록 용량이 커진다(Larger Capacity)왼쪽으로 갈수록 접근 시간이 빨라진다.오른쪽
CPU Clock의 0~1 Cycle이 걸린다. (대략 1 Cycle)CPU Clock의 50~200 Cycle이 걸린다. (대략 100 Cycle)즉 메인 메모리 접근시간과 레지스터 접근시간은 약 100배 차이가 난다.CPU가 메인 메모리 데이터를 접근하는 시간 동안
개발자가 소스 프로그램을 작성하면, 컴파일러가 프로그램을 컴파일 하고 결과물로 Object Module이 생성된다.Linking Editor가 Object Module을 Linking을 하는데 이 때 시스템 라이브러리도 Linking 한다. 결과적으로 Load Modu
\-> 오버레이 구조 이용한다.어셈블러는 PASS-1을 실행한 후 종료하여 아웃풋을 내놓으면 PASS-2를 실행하고 끝나면 종료한다.PASS-1과 PASS-2는 Symbol Table과 Common Routine을 모두 사용한다.✅ 이 경우, 메모리에 Symbol Ta
📌 메모리 관리 기법 3가지1) Continuous allocation하드 디스크 Storage에 들어 있는 실행 파일을 실행시키려면 메모리로 가져가야 한다.프로그램의 처음부터 끝까지를 연속으로 메모리에 배치시키고 실행하는 방법이다.2) Discontinuous al
프로세스가 하나이므로, 메모리 할당받을 프로세스도 하나이다.커널 공간 외의 모든 공간을 프로세스에게 할당하면 된다.나머지 부분은 그냥 버리면 된다. (Wasted Space)✅ Overlay Structure을 활용한다프로세스를 나누어서 section-1, sectio
메모리를 먼저 여러개의 고정된 파티션 공간으로 구분한다.한 파티션은 한 프로세스에 의해서만 할당될 수 있으며, 한 프로세스는 하나의 파티션만 사용할 수 있다.파티션 c에서 p2가 실행중인데, swap-out되었다고 가정하자. 그리고 swap-in 하려고 할 때, 이미
Internal Fragmentation을 없애는 기법Partition의 상태가 계속 변화할 수 있는 멀티프로그래밍 기법이다.초기에는 모든 파티션이 하나의 큰 블록이다.프로세스가 들어오고 나가면서 파티션은 계속해서 변화한다.예제)프로세스 a가 들어오면, a 크기인 20
프로세스의 Image를 여러 조각으로 분할하여 비연속적으로 흩어져서 메모리에 할당되는 기법한 프로세스에 address space가 메모리에 배치될 때 noncontiguous 할 수 있도록 만드는 기법하드웨어와 운영체제가 closely integrate됨으로써 가능하다
요즈음 대부분의 컴퓨터들은 Virtual Memory를 이용하여 메모리를 할당한다.프로세스 이미지를 여러 조각으로 분할하고, 실행 중에 각 시기에 필요한 블록들을 메모리에 로딩한다.Logical Memory와 Physical Memory를 완전히 분리시키는 효과가 발생
Virtual Memory는 Runtime Binding을 할 수밖에 없다. (Load time Binding은 매우 복잡하므로 현실적으로 어렵다)Runtime의 Address Mapping 과정에서, Block Mapping을 한다.프로세스 이미지를 블록 단위로 나누
프로세스의 이미지를 "같은 크기"의 블록으로 분할한다.실행 프로그램 로딩 시, "당장 필요한 페이지"만 로딩한다.실행 도중 "필요한 페이지들만" 추가적으로 로딩을 한다. 즉, Page Fault가 발생하면 로딩한다.따라서 프로세스가 실행하는 동안 한번도 접근하지 않는,
Demand Paging의 Direct Paging 기법의 솔루션으로, Associative Mapping 외의 다른 방법에 대해 알아보자!(1) Associative Mapping (Translation Look-aisde Buffer)(2) PMT를 dedicate
하나의 컴퓨터 시스템을 여러 사용자가 사용하기 때문에, 각 프로세스들이 사용하는 라이브러리 함수들을 프로세스들이 공유하는 것이 더 합리적이다!\-> 페이지를 프로세스간에 공유할 수 있는 기법이 필요하다.코드가 들어있는 페이지\-> Pure Code여야 한다. (= re
프로세스 이미지를 논리적 블록(=Segment)으로 분할한다. 일률적 같은 크기로 분할하는 것이 아니라, 서로 다른 크기의 블록으로 분할된다.Paging system은 주기억장치(memory)를 페이지 크기와 동일한 크기의 페이지 프레임으로 분할하고, 페이지 프레임 넘
장점메모리 관리가 심플하고, 오버헤드가 적다.단점프로그램을 논리없이 분할한다.복잡한 sharing 메커니즘장점프로그램을 논리적으로 분할한다.단순하고 쉬운 sharing 메커니즘단점메모리 관리가 어렵고, 오버헤드가 크다.user program은 logical segmen
Cost ModelVirtual Memory의 성능을 높이기 위한 모델Page Fault의 횟수(Frequency, Rate)를 최소화하기 위한 모델이다.프로세스 Pa가 실행을 시작해서 종료할 때까지, 메모리를 접근한 내역 (r1, d1) (r2, d2) .. (rt,
고정할당(Fixed Allocation) 기반의 Replacement페이지 프레임을 3개 할당 받았는데, 새로운 페이지를 할당받기 위해서는 내가 가진 페이지 중에서 나갈 페이지를 선택해야 한다.내가 가진 페이지 중 희생양을 선택하는 것이다.즉 고정할당 기반에서 MIN
모든 프레임의 집합 내에서 교체 대상을 선택하는 기법이다. (그 대상이 다른 프로세스에 할당된 프레임일지라도)가변할당 기반의 교체기법이다.(Variable allocation based replacement)특정 시간에 어떤 프로세스가 집중적으로 접근하는 페이지들의 집
가상 메모리 시스템에서 가장 일반적인 페이지 사이즈는 4KB이며, 이보다 크거나 작을 수 있다.작은 페이지 사이즈(1) Internal Fragmentation이 더 작아진다.페이징 시스템에서도 Internal Fragmentation이 있다. 마지막 페이지는 페이징
하드 디스크는 디스크 팩과 디스크 드라이브로 구성된다.실제 데이터가 저장되는 미디어하드디스크의 Disk Pack은 중심 축 (spindle)을 기준으로 회전한다.1) Platter디스크 원판은 platter 라고 한다.2) Surface 그 원판의 윗면, 아랫면을 su
SSD는 플래시 메모리 기반으로 만들어진 보조기억장치이다. 내부 데이터를 저장하는 영역은 플래시 메모리이다.플래시 메모리로 만들어진 보조기억장치는 SD 카드 등 다른 것도 있지만, SSD는 접근 하는 인터페이스가 하드디스크와 유사하다.여러개의 플래시 메모리 칩들과 하나
= cylinder number(track number), surface number, sector number이 필요하다.이 때, a와 b 중 어떤 순서가 더 좋을까?데이터가 실린더 단위로 저장되기 때문에, 데이터 접근의 관점에서는 a번 스타일로 사용된다.(SSD는
하드디스크에 파일들이 저장되어 있는 영역이다.파일 시스템은 3가지 뷰를 가지고 있다.사용자 입장에서 파일 시스템은 Hierarchical Directory 구조이다.커널 관점에서 파일시스템은 블록의 sequence이다.하드디스크에서는 cylinder, surface,
대부분의 컴퓨터 시스템은 논리적 디렉토리 구조가 Hierarchical Structure을 가지고 있다. 📌 하나의 파일 시스템에 하나의 디렉토리만 있는 구조이다. sub-directory는 있지 않다.📌 파일 이름, 파일 보호, 파일 관리 등의 문제가 존재한다.디
하나의 컴퓨터 시스템, 하나의 운영체제 밑에 여러 파일 시스템이 있을 수도 있다.예를 들어 윈도우에서는 c드라이브, d드라이브 등 나눠 사용하기도 한다. 이렇게 함으로써 서로 다른 파일 시스템이지만 마치 하나의 파일 시스템인 것처럼 보이게 되는 시스템을 'mounted
![](https://velog.velcdn.com/images/dreamcomestrue/post/1fa76386-7fd3-4fc3-97df-3a2f
대략 domain이 100개라면, file이 백만 ~ 수천만 개일 것이다.더불어 대부분은 그 파일을 생성한 도메인에서만 접근권한을 갖고, 나머지 도메인들은 접근권한을 가지고 있지 않는 경우가 많다. 즉 대부분의 cell이 NULL 인, Sparse Matrix인 경우가
파일 시스템이 이용자에게 어떻게 보여지는지 디자인하는데 중요한 요소들은 다음과 같다.대부분 파일의 operation : open, close, read, write 등은 대부분 시스템 콜로 이뤄진다.(Logical File System, File Organizatio
유닉스 운영체제는 위와 같은 디렉토리 구조를 갖고 있다. 예를 들어 루트 디렉토리 밑에 d 디렉토리가 있을 때, d 디렉토리에 아래와 같은 파일들이 있다면 해당 파일들의 이름과 inode들이 저장된다.. 는 그 자신의 디렉토리의 inode이며, ..는 부모 디렉토리로서
보조기억장치 파일 시스템의 빈 공간을 관리하는 방법에 대해서 알아보자!!데이터 블록 중 비어있는 블록이 어디인지 관리해야 한다.즉, 각 블록은 1bit으로 나타내진다.만약 10개의 블록이 필요하다면 연속으로 10개 0인 bit을 찾으면 된다.Bit Vector은 이렇게