본문 바로가기

Computer Science

(9)
2-5. Virtualization: Multi-Level Feedback Queue 스케줄링(Scheduling)은 CPU를 어떤 프로세스에 할당할지 결정하는 중요한 기술이다.그중에서도 Multi-Level Feedback Queue(MLFQ)는 현대 운영체제에서 널리 사용되는 스케줄링 방식이다. "모두를 만족시키는 스케줄러를 만들 수는 없을까?"라는 물음에서 시작된, MLFQ의 여정을 함께 살펴보자.간단한 스케줄러들, 그리고 그들의 한계 🤔FIFO (First In, First Out)장점: 단순하다!단점: "convoy effect"가 발생.예를 들어, 앞에 있는 작업이 엄청 느리면 뒤의 작업이 전부 대기 상태로 전환된다.→ 결과적으로 CPU와 I/O 자원 이용률이 낮아짐.SJF (Shortest Job First)장점: 평균 대기 시간, 평균 완료 시간이 줄어든다.단점: "작업 ..
2-4. Virtualization: Scheduler(FIFO, SJF, STCF, RR)와 성능 지표 운영체제에서 CPU 사용률(CPU Utilization)을 극대화하려면 멀티프로그래밍이 필수다.그러나, 하나의 CPU 코어는 동시에 하나의 프로세스만 실행할 수 있다.이 때문에 CPU 스케줄링이 필요하다. 스케줄링 알고리즘은 프로세스의 실행을 효율적으로 관리해 시스템 성능을 최적화하고,각종 성능 지표(CPU Utilization, Response Time 등)를 개선하는 데 초점이 맞춰져 있다.CPU 스케줄링과 프로세스 실행 과정CPU-I/O Burst Cycle프로세스 실행은 CPU 실행(CPU Execution)과 I/O 대기(I/O Wait)가 반복되는 사이클로 이루어진다.CPU burst는 일반적으로 짧은 CPU burst가 많은 I/O bound 작업과 긴 CPU burst가 적은 작업으로 구..
2-3. Virtualization: Limited Direct Execution OS는 프로그램 코드를 메모리에 Load한다. (process의 address space에)프로그램의 run-time Stack이 할당된다. (지역 변수, 함수 인자, return 주소)main(argc, argv)로 stack initHeap 설정 (Dynamically allocated area; malloc())I/O 설정 (STDIN, STDOUT, STDERR 등)main(): 프로그램 시작실행 중인 프로그램에 limit가 없다면, OS는 그 어떤 것에도 제어권을 갖지 않고, 그저 library가 될 것이다.Direct Execution의 문제프로세스가 해서는 안될 instruction (I/O to disk, CPU/Memory 접근)CPU로 제어권을 다시 가져오기 힘듦. (ex. 무한루프)#..
2-2. Virtualization: 파일 디스크립터와 입출력 관리 I/O redirection이란 file, command, program, script의 출력 결과를 다른 file, ...의 입력으로 전달하는 것을 말한다.shell이 fork()하고 exec("wc", "wc w3.c")를 수행한다.→ exec(...)하기 전, shell이 STDOUT(1)을 닫고 open("newfile.txt")한다.File Descriptor & File Descriptor TableFile Descriptor는 파일, 디렉토리, 또는 기기를 나타내는 정수값이다.각 프로세스는 File Descriptor Table을 가지고 있는데, STDIN(0), STDOUT(1), STDERR(2)는 기본으로 열려 있다.각 System Call 정리:open(): 새로운 file descr..
2-1. Virtualization: 프로세스 관리와 자료구조, Process API 프로세스 가상화Process(프로세스)는 실행 중인 프로그램으로 정의한다.Program이 디스크 상에 존재하는 명령어와 정적 데이터의 묶음이라면(Passive),Process는 program counter가 있는 동적인 존재이다(Active).실행 가능한 파일을 memory에 load하여 program이 process가 된다.→ 하나의 프로그램이 여러 프로세스를 생성할 수 있다.Process는 Code section / Data section / Stack / Heap / Program counter로 이루어진다.OS는 Virtualization으로 CPU가 여러 개인 듯한 illusion(착각;환영)을 만들어낸다. (Time Sharing; 시분할)Process의 Machine StateAddress ..
1. 운영체제 개요 프로그램은 매우 단순한 일을 한다:명령어를 메모리에서 Fetch하고,Decode하고 (무슨 명령어인지 파악),Data를 얻고 (연산),Execute한다.OS는 여러 프로그램을 쉽게 실행하게끔 하고, 프로그램 간의 메모리 공유, 장치와 상호작용할 수 있게 한다.System Call을 사용해 OS에 원하는 작업을 수행시킬 수 있다.OS는 Virtualization을 통해 다음을 가능하게끔 한다:CPU 공유Memory 공유Disk 공유CPU 가상화A program that loops and prints (cpu.c)#include #include #include #include #include #include "common.h" // Contains Spin() functionint main(int argc..
1. Overview Intro to Computer System(과거 어셈)과 OS 간의 중간 강의다. internals of computer focusing on software-level 운영체제 과목 들을 때 중요하게 작용 컴퓨터가 OS와 어떤 식으로 상호작용하는지, 프로그래머 중심적 course이다. OS에 대한 지식을 사용하여 좋은 프로그래머가 되는 방법을 배우는 것이 목표고, OS 자체를 만드는 것은 아직 아님 주요 주제 Exceptional control-flow Process Synchronization Parallelism Virtual memory Uploaded by N2T
네트워크 계층 구조 OSI 참조 모델데이터 통신의 규격과 프로토콜을 통일하려고 ISO(International Organization for Standarization)이 시도했지만, 실패로 끝났다. 하지만 이 과정에서 선언한 OSI 참조 모델이라는 데이터 통신의 단계 구성도는 데이터 통신을 설명하는데 유용하게 쓰인다. OSI 참조 모델은 데이터 통신을 단계로 나누어 각 단계의 순서를 명확히 하고, 이 모델에 따라 프로토콜을 정의하였다. OSI 참조 모델은 데이터 통신을 7개의 계층(Layer)으로 나눈다. OSI 참조 모델의 구성제 7계층응용계층네트워크 서비스 제공내용표현제 6계층표현계층데이터 형식 결정제 5계층세션계층데이터 송수신 순서 등 관리제 4계층전송계층에러가 적은 전송 시행전송물제 3계층네트워크계층전송 규칙, 수..
네트워크 개요 (프로토콜, 회선/패킷 교환, LAN, WAN) 네트워크의 정의와 그 구성요소컴퓨터와 컴퓨터가 데이터를 주고받는 것이 네트워크이고 그것을 실행하는 방법이 데이터 통신이다. 컴퓨터 네트워크는 컴퓨터와 통신 매체, 데이터로 이루어진다.데이터 통신을 통해 정보를 주고받으려면 데이터를 가진 컴퓨터, 데이터를 받는 컴퓨터, 이 둘을 연결하는 통신 매체가 필요하다.인터페이스, 프로토콜데이터가 지나는 통신 매체와 컴퓨터를 연결할 때 필요한 접속구를 인터페이스(Interface)라고 부른다.     데이터를 주고받을 때 규칙이 필요한데, 데이터를 보내는 쪽과 받는 쪽이 동일한 규칙을 사용해야 데이터가 올바르게 전달될 것이기 때문이다. 이 규칙을 프로토콜(Protocol)이라 한다.프로토콜은 데이터를 다루는 방법이나 주고받는 순서 등을 결정한다.사람 대화와 네트워크 ..