개발자 면접 공부/운영체제,CS 27

가상메모리, 번외(why name random access memory?)

1. 개요 오늘은 가상메모리에 대해 알아보겠습니다. 2. 가상메모리? 가상메모리라는 말을 들었을때 물리적 메모리가아닌 가상? 이라는 생각을 먼저했었습니다. 도대체 가상메모리란 무엇이며 현재 많은 용량을 저장할수 있는 물리메모리를 굳이 가상메모리와 나눴는지 공부가 필요했습니다. 3. 결국 공간과 보안을 위해 가상메모리를 이렇게 정의할수 있습니다. 가상 메모리(Virtual Memory)는 운영체제에서 실제 물리 메모리(RAM)보다 큰 주소 공간을 프로세스에 제공하기 위해 사용되는 기술 CPU가 프로세스를 처리할 때, 특정 시점에 프로세스의 특정 메모리를 접근 하는 주소값은 아주 작을 것이다. 그 주소값이 아주 작다는 점을 착안하여 고안된 방법이며, 가상 메모리는 프로세스와 관련된 주소값을 저장하는 메모리 ..

임계영역(Critical Section)

1. 개요 오늘은 임계영역(Critical Section)에 대해 알아보겠습니다. 2. 임계영역 임계영역을 설명하기 전에 봤던 내용중 Race Condition(경쟁 상태)를 알아야합니다. 경쟁 상태란 두 개 이상의 멀티 쓰레드가 하나의 자원을 두고 경쟁을 하는 상태로 잘못된 값을 가질수있다고 하였습니다. https://chogyujin-study.tistory.com/104 Race Condition 경쟁상태 1. 개요 오늘은 OS에 경쟁상태 Race Condition에 대해서 공부하도록 하겠습니다. 2. Race Condition(경쟁상태)? 경쟁상태란 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근 chogyujin-study.tistory.com 그렇다면 ..

메모리 영역

1. 개요 오늘은 메모리 영역의 대해 알아보도록 하겠습니다. 2. 메모리 영역 메모리 영역에는 다음과 같이 나눠져있다. 하지만 자세히 나눠보면 아래와 같이 나눌수있다. RODATA, DATA, BSS는 모두 DATA영역으로 표시하고 다르게 동작을 한다. 1. Text 영역 (code 영역) 우리가 작성한 코드가 컴파일 된후 기계어로 번역되어 저장되어있는 곳이다. 오직 읽기 전용이다. %eip를 통해 읽어서 코드가 실행된다. 프로그램이 끝날때까지 메모리에 남아있다. 전역상수는 여기에 저장된다. 2. Rodata 영역 Rodata는 해석하면 Read only data로, 읽기전용인 data들이 들어간다. 주로 상수, 상수형 문자열, printf의 중괄호 부분이 들어간다. 오직 읽기 전용이다. 3. Data ..

TCB

1. 개요 오늘은 TCB에 대해 알아보도록 하겠습니다. 2. TCB? Thread Control Block의 약자로 쓰레드를 관리해주는 블록이다. 어디서 많이 본것이 있을 것이다. Process Control Block (PCB) 이 생각나는 블록이다. https://chogyujin-study.tistory.com/37 PCB, Context Switching 오늘은 PCB랑 Context Switching 에 대해 공부해보겠습니다. Process Metadata - CPU들은 각 프로세스들이 누군지 알아야 관리가 가능합니다. 프로세스들의 특징을 갖고있는 것이 Process Metadata입니다. Process I chogyujin-study.tistory.com 그럼 TCB는 왜 생겨났을까?, 답은 ..

가상메모리 관리

1. 개요 오늘은 가상메모리와 가상메모리의 관리에 대해 공부하겠습니다. 2. 가상메모리란? 가상메모리는 운영체제에서 크고 느린 장치인 디스크를 어떻게 메모리에 다 담을지 또한 메모리 용량이 부족할지? 그리고 어떻게하면 메모리의 보안을 유지할수있을지 많은 선배 개발자분들이 고민을 하였다. 그 결과 일부 페이지들을 스왑 아웃하는 기능을 사용하여 멀티 프로그래밍과 사용 편의성 등의 이유로 실제 물리 메모리보다 더 많은 용량의 메모리가 필요하다고 판단, 그것이 가상 메모리가 되었다. Non-Contiuous allocation 사용자 프로그램을 block으로 분할하여 적재/실행 paging/segmentation system 가상 메모리 관리의 목적 가상 메모리 시스템 성능을 최적화 cost model, 다양한..

캐시메모리와 지역성 그리고 캐시라인

1. 개요 오늘은 캐시 메모리, 지역성, 캐시라인에 대해서 공부하겠습니다. 2. 캐시? 캐시 메모리란(Cache Memory)? 주기억장치에서 자주 사용하는 프로그램과 데이터를 저장해놓고 속도를 빠르게 하는 메모리 속도가 빠른 장치와 느린 장치간의 병목 현상을 줄여주며, 메인 메모리의 CPU사이에 위치한다. 캐시가 효율적으로 동작하기 위해서는 CPU가 참조할 정보에 대한 예측이 잘 되어있어야 한다. 즉, 캐시의 적중률(Hit-rate)을 극대화 시키는것이 포인트이다. 이때 나오는 개념이 캐시의 지역성(Locality) 3. 캐시의 지역성? 그렇다면 캐시의 지역성(Locality)란? 데이터에 대한 접근이 시간적-공간적으로 가깝게 발생하는 것을 뜻한다. 이때 프로그램은 정보를 균일하게 참조하는 것이아니라,..

Race Condition 경쟁상태

1. 개요 오늘은 OS에 경쟁상태 Race Condition에 대해서 공부하도록 하겠습니다. 2. Race Condition(경쟁상태)? 경쟁상태란 두 개 이상의 cocurrent한 프로세스(혹은 스레드)들이 하나의 자원(리소스)에 접근하기 위해 경쟁하는 상태를 말합니다. 3. Critical Section(임계영역) 통장에 돈이 100만원 있습니다. 지난달에 친구에게 빌렸던 50만원을 갚으려고 이체를 하고 있었습니다. 계좌번호와 금액을 입력하고 송금 버튼을 눌렀습니다. 그런데, 오늘 마침 카드값 70만원이 빠져나가는 날입니다. 정말정말 우연히 저의 이체와 카드값 이체가 동시에 일어났습니다. 그런데 두 이체가 통장에 있는 잔액을 확인 했을 때 100만원으로 이체들이 모두 성공해 버렸습니다. 은행에 비상이..

라이브러리 vs 프레임워크

오늘은 라이브러리와 프레임워크에 차이점에 대해 알아보도록 하겠습니다. 1. 개요 라이브러리랑 프레임워크 얼핏 프로그래머 사이에서 들으면 매우 비슷해 보이는 단어입니다. 저 또한, 비슷해 보이는 단어로 알고있었습니다. 하지만 이 또한, 엄연히 다른 단어입니다. 한개씩 알아보도록 하겠습니다. 2. 라이브러리(Library) 라이브러리란 위키백과에서는 라이브러리는 주로 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 여기에서 구성 데이터, 문서, 도움말, 메시지 틀, 미리 작성된 코드, 함수, 클래스, 값, 자료형 사양 등을 포함할 수 있다. 라고 설명이 되있습니다. 라이브러리는 쉽개 말해서 개발에 필요한 것들을 미리 구현해놓은 도구라고 할 수있습니다. 재사용이 가능한 기능을 미리..

RBT(Red Black Tree) VS 힙

오늘은 RBT(Red Black Tree) vs 힙 에 대해서 알아 보겠습니다. 1. RBT은? Red Black Tree라고 하며 이진 탐색 트리에 문재점을 고치기 위해 탄생한 기법입니다. 이진 탐색 트리가 한쪽에 치우쳐져있으면 시간 복잡도가 매우 증가하는 모습이있습니다 (기존의 시간 복잡도가 O(logN) 에서 O(N)으로 되는 현상). 이런 경우를 대비하기 위해 레드-블랙 트리가 탄생하였습니다. 레드-블랙 트리는 이진 탐색 트리에 항상 넣을때와 뺄때, 그리고 순회할때 모두 O(logN) 을 만족합니다. 원리를 간단하게 설명하면 Red 와 Black으로 노드의 색을 칠하고 데이터를 넣을때와 뺄때 Restructuring과 Recoloring라는 추가 프로세스로 진행하여 균형을 맞춥니다. "루트 부터 ..

해쉬 테이블(Hash Table)

오늘은 해쉬 테이블(Hash Table) 에 대해 공부 하도록 하겠습니다. 1. 해쉬 테이블 이란?? 해쉬 테이블은 키(Key) 에 데이터 값(Value) 를 저장하는 자료 구조 입니다. 키를 통해 데이트 값을 찾아 주기 때문에 값을 읽는속도가 매우 빠릅니다. O(1) 파이썬의 딕셔너리(Dictionary), C++의 Unorderd_map이 대표적인 해쉬 테이블 자료구조 예시입니다. 따라서 파이썬, C++은 따로 해쉬 테이블을 구현 안해도 괜찮습니다. 2. 해쉬 테이블 용어 정리 해쉬(Hash) - 임의 값을 고정 길이로 변환하는 것 해싱 함수(Hash Function) - Key를 해쉬 값(Value)으로 저장되는 주소값으로 바꾸기 위한 수식 해싱(Hashing) - 키 값을 해시 함수라는 수식을 대..