본문 바로가기

CS(ComputerScience)

(29)
주소 공간의 개념, VM 주소 공간의 개념, VM 운영체제가 주소 공간을 추상화 하는 방법 ❓왜 윈도우에서 가상 메모리 공간은 64KB 정렬이 된 걸까? 가상 메모리를 할당하는 경우 일반 페이지 하나의 크기는 4KB 그런데, 시스템은 64KB 선형 주소 공간을 한꺼번에 예약합니다. 1Byte가 필요하다고 해도 4KB가 commit되며, 64KB의 선형 주소 공간이 예약됩니다. 즉, 작은 데이터를 사용하더라도 더 큰 공간이 할당됩니다. 이에 대한 원인은 Alpha AXP RISC 프로세서의 동작 특성에서 기인했다고 합니다. RISC 프로세서의 경우 32bit 정숫값을 로드하는 명령어가 없었고, 대신 2개의 16비트 정수를 로드해 합치는 방식이었다고 합니다. 16bit의 정수는 2의 16승 또는 65,536 가지의 서로 다른 값을 ..
멀티프로세서 스케줄링 멀티프로세서 스케줄링 SQMS (단일 큐 방식) MQMS (멀티 큐 방식) ❓ 병행성 concurrency 공유데이터 접근할 때, 올바른 연산 결과를 보장하기 위해(상호배제를 보장하는 위해) 락-프리(lock-free) 데이터 구조 사용. 하지만, 성능 측면에서 CPU의 개수가 증가할수록 동기화된 자료 구조에 접근하는 연산은 매우 느리게 되어 문제가 있다. 하지만, 더 많은 CPU를 추가해도 더 빨리 실행되지 않는 문제 발생! 이를 쓰레드를 이용(멀티 쓰레드 응용 프로그램)하면 더 많은 수의 CPU가 주어질 수록 더 빠르게 실행된다. ❓ Thread와 Process의 차이는? 프로세스는 독립적, 높은 수준의 격리, 내결함성 자체 메모리 공간, 리소스 및 실행 환경을 갖춘 독립적인 프로그램으로 다른 프로세..
스케줄링 : 비례 배분 스케줄링 : 비례 배분 Proportional Share Fair Share 반환시간과 응답시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장하는 것이 목적 ❓CPU의 일정 비율을 왜 보장해줘야 할까? CPU의 일관된 성능, 일관된 응답성을 보장하는데 도움이 되기 때문이다. 반환시간 : 프로세스가 시작해서 끝날때가지 걸리는 시간 응답시간 : 요청 후 응답이 오기 시작할때까지의 시간 📌 배운 것 추첨 기법 lottery scheduling 추첨권 = 프로세스 지분 예를 들어, 총 100장의 추천권이 있다고 하자. A : 0~74까지의 티켓(75%) B : 75~99까지의 티켓(25%) 0~99 범위 내에서 20개의 난수를 발생시켰다. 스케줄링 결과는 B가 20% (4/20), A가 8..
스케줄링: 멀티 레벨 피드백 큐 스케줄링: 멀티 레벨 피드백 큐 MLFQ, Multi-level Feedback Queue 여러 개의 큐로 구성되며, 각각 다른 우선순위(priority level)가 배정된다. 높은 우선순위를 가진 작업(큐)가 선택된다. 📌 배운 것 MLFQ가 해결하려는 문제 짧은 작업을 먼저 실행시켜 반환시간을 최적화 대화형 사용자(화면 앞에 앉아 바로면서 프로세스 종료를 기다리는 사용자)에게 응답이 빠른 시스템이라는 느낌을 주고 싶음. 즉, 응답시간을 최적화 MLFQ 규칙 규칙 1 : Priority(A) > Priority(B)이면, A가 실행된다.(B는 실행되지 않는다.) 규칙 2 : Priority(A) = Priority(B)이면, A와 B는 RR 방식으로 실행된다. 규칙 3 : 작업이 시스템에 진입하면, ..
스케줄링: 개요 스케줄링: 개요 컴퓨터 시스템 개발 이전에 생산 관리 분야에서 개발되었으며 컴퓨터에 적용된 스케줄링 원칙! 📌 배운 것 워크로드(workload) 프로세스들이 실행되는 상황 워크로드를 잘 알수록 그에 맞게 정책을 만들 수 있을 있다. 핵심 가정 모든 작업은 같은 시간 동안 실행된다. 모든 작업은 동시에 도착한다. 각 작업은 시작되면 완료될 때까지 실행된다. 모든 작업은 CPU만 사용한다.(즉, 입출력을 수행하지 않는다.) 각 작업의 실행 시간은 사전에 알려져 있다. 스케줄링 평가 항목(평가 기준) 반환시간(Trunaround time) = 완료시간 - 도착 시간 반환시간 ⇔ 성능 지표 하지만, 성능을 높이고자 몇몇 작업의 실행을 중지하면 공정성(fairness)이 떨어진다. 📌 기본접근법 비선점(non-..
제한적 직접 실행 원리 제한적 직접 실행 원리 Limited Direct Execution 운영체제 개발자들은 프로그램을 빠르게 실행하기 위해 이 기법을 개발했다. 프로그램을 CPU상에서 그냥 직접 실행시키는 것! feat. user mode, kernel mode, system call 📌 배운 것 CPU 가상화 한 프로세스를 잠시 동안 실행하고 다른 프로세스를 또 잠깐 실행하고.. CPU 시간을 나누어 쓰므로써 가상화를 구현 해결해야 할 문제 성능저하, 시스템에 과중화 오버헤드 주지 않아야 함. 제어 문제, 자원을 효율적으로 관리 OS는 제어권을 유지하면서 성능 저하가 없도록 하는것이 궁극적인 목표이다. 제어권을 상실하게 된다면 어떤 문제가 발생할까? 한 프로세스가 영원히 실행을 계속해 컴퓨터를 장악 접근해서는 안되는 정보..
프로세스 API 프로세스 API 프로세스를 생성하고 제어하는 방법 📌 배운 것 UNIX 시스템 fork(), exec() 시스템 콜 : 프로세스 생성하기 위해 wait() 시스템 콜 : 프로세스가 자신이 생성한 프로세스가 종료되기를 기다리기 원할 때 사용 PID process identifier 프로세스 식별자 실행과 중단과 같은 특정 프로세스를 대상으로 작업해야하는 경우 프로세스를 지칭하기 위해 사용. 주요 시스템 콜 fork() 생성된 프로세스(자식 프로세스 : 0 반환)는 호출한 프로세스(부모 프로세스 : 자식 프로세스의 PID 반환)의 본사본 하지만, 자식 프로세스는 부모 프로세스와 완전히 동일하지는 않다. 자식 프로세스는 자신의 주소공간, 레지스터, PC 값을 가진다. wait() 부모 프로세스가 자식 프로세스..
가상화, 프로세스의 개념 가상화, 프로세스의 개념 프로세스 = cpu 가상화 📌 배운 것 프로세스 란? 실행 중인 프로그램 프로그램이란? 디스크 상에 존재하며 실행을 위한 명령어와 정적 데이터의 묶음 우리는 컴퓨터를 사용할 때 여러 개의 프로그램을 동시에 실행시킨다. 예를 들어, 웹 브라우저, 슬랙, 게임, 음악 플레이어 등을 동시에 실행할 수 있다. 그렇다면, 적은 개수의 CPU 밖에 없는데, 어떻게 운영체제는 무한대에 가까운 CPU가 있는 듯한 환상을 만들어 낼까? 바로 OS는 CPU를 가상화 하여 CPU가 여러 개 존재한다는 환상을 제공한다. 하나의 프로세스를 실행하고, 얼마 후 중단시키고 다른 프로세스를 실행하는 작업(문맥 교환)을 반복해 가상 CPU가 존재하는 듯한 환상을 준다.이를 시분할 기법(개체들을 공유, 공간 분..
운영체제 개요 운영체제 개요 📌 배운 것 프로그램이 하는 일 반입(fetch) - 해석(decode) - 실행(execute) OS(Operating System) = 소프트웨어 = 가상머신(Virtual Machine) = 자원 관리자(Resource Manager) 프로그램을 쉽게 실행하기 위해(easy to use), 시스템을 사용하기 편리하기 만들기 때문에 추상화를 해줌! 추상화를 통해 큰 프로그램을 이해하기 쉬운 작은 부분들로 나누어 구현 가능. 프로그램 간의 메모리 공유를 가능케 하기 위해 프로세서, 메모리 또는 디스크와 같은 물리적 자원을 사용하기 편리한 가상 형태의 자원으로 가상화(프로그램 실행, 메모리 할당, 파일 접근) 많은 프로그램이 CPU를 공유해 동시에 실행될 수 있도록 함. 프로그램들이 디스크..
Pintos File System Pintos File System Block이란? 의미있는 정보를 담아 두는 논리적인 단위 파일 시스템이 필요한 이유? 파일을 새로 생성할 때, 하드 디스크에 빈공간을 생성 파일에 접근하고자 할때, 하드 디스크에 몇번째 주소에 있는지 알아야 엑세스 가능 파일에 특정 권한이 있을 경우에만, 삭제&수정 가능하도록 관리. Pintos 의 디렉토리 구성은 계층 구조로 루트 디렉토리와 하위 디렉토리로 구성되어 있습니다. 저희는 파일 시스템 작업의 inode 구조와 파일 할당 등의 디렉토리 구성요소에 집중하여 공부해봤습니다. 먼저 말씀드리고 싶은 것은 파일 시스템에서 디렉토리 입니다. 디렉토리 구조는 계층적인 구조를 통해 하위 디렉토리와 파일을 포함할 수 있는 부모-자식 관계를 만듭니다. 여기서 루트 디렉토리는 디..