반응형

2024/10 58

[TIL] 가상 메모리 Virtual Memory/ 페이징 Paging

가상 메모리 Virtual Memory 프로그램이 혼자 메모리를 사용하는 것처럼 메모리를 가상화한 것  애플리케이션을 실행하는데 최소한 얼마만큼의 메모리가 필요한가에 집중하여 메모리를 사용할 수 있다애플리케이션의 일부분만 메모리 (기억 장치) 에 올려진다면, 메모리에 올라가지 않은 나머지는어디에 위치해야 할까? -> 보조 기억장치, 디스크에 위치한다, 즉, 가상 메모리의 핵심은 보조 기억장치이다 가상 메모리의 주요 기능 및 특징1) 보안성 및 안정성 프로그램이 메모리에 간접 접근하며 기본적으로 프로그램 간 메모리가 분리되며필요한 경우에만 특정 메모리를 서로 공유해 메모리 접근에 대한 오류를 줄인다 2) 개발 용이성프로그램은 각자 고유한 메모리를 사용하여 실제 메모리 용량과는 무관하게 프로그램을 만들 수 ..

TIL 2024.10.18

[OSTEP] 가상화 CH10-CH13

CH10 멀티프로세서 스케줄링 (고급)멀티프로세서 스케줄링 Multiprocessor Scheduling 은 병행성 Concurrency 주제를 깊게 공부한 이후에 다루는 게 좋다 멀티코어를 사용하는 다중 CPU 시대가 왔지만, 전통적 응용 프로그램은 오직 하나의 CPU만 사용하기 때문에 더 많은 CPU를 추가해도 더 빨리 실행되지 않는다 이 문제를 해결하려면 응용 프로그램은 병렬 Parallel 로 실행되도록 다시 작성해야 하며, 보통 쓰레드를 이용한다 멀티 쓰레드 응용 프로그램은 작업을 여러 CPU에 할당하며, 따라서 더 많은 수의 CPU가 주어지면 더 빠르게 실행된다 핵심 질문 - 여러 CPU에 작업을 어떻게 스케줄해야 하는가 운영체제는 어떻게 작업을 여러 CPU에 스케줄해야 하는가? 어떤 새로운 ..

[TIL] RB Tree 구현하기 #2

RB Tree 기본 개념 과 RB Tree 구현하기 #1 에 이어서, rbtree.c 구현 #25. 왼쪽으로 회전시키기 void delete_rbtree(rbtree *t)RB Tree 에 삽입/ 삭제를 수행할 때 회전을 통해 트리의 균형을 유지하는 경우가 많기 때문에왼쪽으로, 오른쪽으로 회전하는 함수를 별도로 구성했다 왼쪽으로 회전하는 경우는 루트의 오른쪽 자식에 새로운 오른쪽 자식이 생기는 상황인데 기존의 오른쪽 자식을 루트로 올리고 루트는 왼쪽 자식으로 내려 보내면서 균형을 맞춘다 그 과정에서 서로를 잘 연결시켜야 하는데 이 부분이 많이 헷갈려서 그림을 그리며 개념을 이해했다 // FixUp 시 좌회전void rotate_left(rbtree *t, node_t *node){ // 1. rig..

TIL 2024.10.17

[혼공컴운] CH10 프로세스와 스레드

CH10 프로세스와 스레드10-1 프로세스 개요 프로그램은 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리일 뿐이지만메모리에 적재하고 실행하는 순간 그 프로그램은 프로세스가 된다이 과정을 프로세스를 생성한다고 한다 포그라운드 프로세스 Foreground Process사용자가 볼 수 있는 공간에서 실행되는 프로세스백그라운드 프로세스 Background Process 사용자가 볼 수 없는 공간에서 실행되는 프로세스 1) 사용자와 직접 상호작용이 가능한 백그라운드 프로세스 - 데몬 Daemon, 서비스 Service 2) 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스  프로세스 제어 블록모든 프로세스는 실행을 위해 CPU가 필요하지만, CPU 자원은 한정되어 있다 PCB에 담기는 대표적인 ..

[OSTEP] 가상화 CH08- CH09

CH08 스케줄링 - 멀티 레벨 피드백 큐멀티 레벨 피드백 큐 Multi-level Feedback Queue, MLFQ MLFQ가 해결하려고 하는 기본적인 문제는 두 가지이다 첫째, 짧은 작업을 먼저 실행시켜 반환 시간을 최적화하고자 한다 SJF나 STCF 같은 알고리즘은 작업의 실행 시간 정보를 필요로 하지만, 운영체제는 이 실행 시간을 미리 알 수 없다 둘째, MLFQ는 대화형 사용자에게 응답이 빠른 시스템이라는 느낌을 주고 싶었기 때문에 응답 시간을 최적화한다 (대화형 사용자 - 화면 앞에 앉아 바라보면서 프로세스의 종료를 기다리는 사용자) RR은 응답 시간을 단축시키지만 반환 시간은 거의 최악이다 핵심 질문 - 정보 없이 스케줄하는 방법은 무엇인가작업의 실행 시간에 대한 선행 정보 없이 대화형 ..

[혼공컴운] CH09 운영체제 시작하기

CH09 운영체제 시작하기09-1 운영체제를 알아야 하는 이유운영체제란모든 프로그램은 실행을 위해 자원 Resource 을 필요로 한다자원 - 프로그램 실행에 있어서 마땅히 필요한 요소 (컴퓨터의 네 가지 핵심 부품 포함)운영체제는 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이고,운영체제는 중요한 프로그램이기 때문에 커널 영역이라는 특별한 영역에 적재되어 실행된다    운영체제는 사용자를 위한 프로그램이 아니고, 프로그램을 위한 프로그램이다문제 해결 능력 - 오류 메세지에 대한 깊은 이해  09-2 운영체제의 큰 그림  운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나 운영체제가 제공하는 기능은 다양하지만, 가장 핵심적인 서비스는 존재한다 ..

[TIL] 이진 탐색 트리 BST, Binary Search Tree

이진 탐색 트리 BST, Binary Search Tree 이진 트리와 B-Tree 는 정리했었는데 이진 탐색 트리는 정리를 안 해놔서 복습 겸 정리한다 이진 트리 Binary Tree 정리 내용B-Tree 정리 내용이진 탐색 트리의 속성 1. 각 노드의 왼쪽 하위 트리에는 노드의 키보다 작은 키가 있는 노드만 포함된다2. 각 노드의 오른쪽 하위 트리에는 노드의 키보다 큰 키가 있는 노드만 포함된다3. 모든 서브 트리 또한 이진 검색 트리이다 4. 중복된 키를 허용하지 않는다  이진 탐색 트리 생성 예시60, 15, 62, 80, 54, 11 1. 50을 트리의 루트로 트리에 삽입2. 다음 요소의 키가 루트 노드 키보다 작으면 왼쪽 하위 트리의 루트로 삽입 3. 루트 노드 키보다 크면 하위 트리의 오른쪽..

TIL 2024.10.15

[OSTEP] 가상화 CH06 - CH07

발표 날짜 2024.10.16 WED 10시a.m.CH06 제한적 직접 실행 원리 Limited Direct Execution CPU를 가상화하기 위해서 운영체제는 여러 작업들이 동시에 실행되는 것처럼 보이도록 물리적인 CPU를 공유한다 CPU 시간을 나누어 씀으로써 가상화를 구현할 수 있고, 가상화 기법을 구현하기 위해서는 몇 가지 문제를 해결해야 한다 1) 성능 저하 - 시스템에 과중한 오버 헤드를 주지 않으면서 가상화를 구현할 수 있어야 한다 2) 제어 문제 - 제어권을 상실하면 한 프로세스가 영원히 실행을 계속할 수 있는 등의 문제가 발생할 수 있다 6.1 기본 원리 - 제한적 직접 실행 Limited Direct Exectuion "직접 실행" - 프로그램을 CPU 상에서 그냥 직접 실행시키는 ..

CH07 링커 Linking

CH07 링커 Linking 링킹 Linking여러 개의 코드와 데이터를 모아서 연결하여 메모리에 로드될 수 있고 실행될 수 있는 한 개의 파일로 만드는 작업 링킹은 컴파일 시에 수행할 수 있으며 대게 링커에 의해 처리되고, 링커는 독립적인 컴파일을 가능하게 한다  링킹을 이해하면 큰 프로그램을 작성하는 데 도움이 될 것이다 링커를 이해하면 위험한 프로그래밍 에러를 피할 수 있게 된다 링킹을 이해하면 어떻게 언어의 변수 영역 규칙이 구현되었는지 이해하는 데 도움이 된다 링킹에 대해서 이해하면 다른 중요한 시스템 개념을 이해할 수 있게 된다 링킹을 이해하면 공유 라이브러리에 대해 이해할 수 있다  7.1 컴파일러 드라이버 대부분의 컴파일 시스템은 사용자를 대신에서 언어 전처리기, 컴파일러, 어셈블리, 링커..

반응형