운영체제

Computer Science/Operating System

MMU, TLB

MMU(Memory Management Unit) 가상메모리 시스템에서 CPU는 가상 주소를 통해 물리 주소에 접근하여 작업한다. 이 때, 가상 주소를 물리 주소로 변환하는 하드웨어 디바이스를 MMU라고 한다. 가상 메모리 주소(논리 메모리 주소)를 실제 메모리 주소로 변환하는 역할을 한다. OS를 통해 페이지 테이블에 접근하고, 변환 작업을 진행한다. 일반적으로 CPU 내에 존재하지만, 별도의 통합 칩 (IC)에서 작동하기도 한다. Memory Protection 기능을 제공한다. 보호되는 메모리 영역에 접근하지 못하게 한다. 메모리의 실제 배열과 상관 없이 연속된 메모리로 취급할 수 있게 한다. TLB(Translation Lookaside Buffer) 자주 참조되는 Page Table Entry를..

Computer Science/Operating System

메모리 계층구조

메모리 계층구조(Memory Hierarchy) 각각 다른 성능과 특징을 가지는 여러 메모리가 존재한다. 용도에 따라 적재 적소에 사용하면 최적의 효율을 낼 수 있다. 레지스터(Register) CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치 CPU(Central Processing Unit) : 중앙처리 장치 컴퓨터의 4대 주요 기능(기억,해석,연산,제어)을 관할하는 장치이다. 고속 메모리로, 소량의 데이터를 처리할 때 사용한다. CPU는 자체적으로 데이터를 저장할 방법이 없기에 레지스터를 거쳐야 한다. CPU 내부 레지스터 종류 PC(Program Counter) 다음에 실행할 라인의 주소를 가지고 있는 레지스터 AC(ACumulator) 연산 결과 데이터를 일시적으로 저장하..

Computer Science/Computer Network

OSI 7 계층

OSI 7 계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 통신이 일어나는 과정을 단계별로 파악할 수 있다. 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건드리지 않고도 이상이 생긴 단계만 고칠 수 있다. 현대 인터넷은 TCP/IP Model을 따른다. 개선된 TCP/IP 모델은 5계층을 가진다. 전체적인 통신 과정 송신 : 각 Layer를 거치며 데이터에 헤더 정보를 추가한다. 수신 : 각 Layer별로 헤더 정보를 해석하여 원하는 데이터, 정보를 파악한다. 1계층 - Physical Layer(물리 계층) 컴퓨터는 0과 1만을 인식할 수 있다.(전기적 ON/OFF 신호) 따라서, 데이터를 전기 신호로 바꾸어 전송하는 계층이다 단순하게 데이터 전달의 역할..

Computer Science/Operating System

Segmentation(세그멘테이션)

Segmentation(세그멘테이션) 일정한 크기로 자르는 Paging과 달리, PCB, Code, Data, Stack 영역 등 논리적 내용을 기반으로 프로그램을 나누는 기법이다. 나눠진 하나하나를 Segment라고 부른다. PCB, Code, Data 영역은 공유 자원으로 쓰인다. 따라서, 프로세스 간 sharing 에 장점을 가진다. Segment는 크기가 다 다르다. 즉, Dynamic Partitioning에 해당한다. 따라서, 외부단편화가 발생한다. 연속된 공간에 존재하지 않아도 된다. 장점 내부단편화를 해결했다. 보호와 공유 기능을 수행한다. 단점 외부단편화가 발생할 수 있다. 너무 큰 단점이라 Segmentation을 잘 사용하지 않는다고 한다. Virtual Address & Segmen..

Computer Science/Operating System

가상 메모리(Virtual Memory), 페이징(Paging)

가상메모리(Virtual Memory) 주기억장치의 부족한 물리적 저장공간을 보조기억장치를 이용해서 가상으로 늘려 주는 기술이다. 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다. 실행에 필요한 부분만 메모리에 올려 실행한다. CPU는 TLB, MMU 를 사용하여 가상 메모리 주소에 접근한다. Paging 또는 Segmentation 을 사용한다. 장점 실제 메모리보다 큰 프로그램을 실행할 수 있다. 한정된 메모리 내에서 더 많은 프로그램을 동시에 실행할 수 있다. 단점 가상 메모리로 실행하는 것은 물리 메모리로 실행하는 것보다 느리다. Paging(페이징) 물리 메모리를 일정한 크기인 Frame으로 나누고, 논리 메모리를 Frame과 동일한 크기의 Page로 나눈다. 이후..

Computer Science/Operating System

내부 단편화, 외부 단편화

Internal Fragmentation(내부 단편화) Partitioning 상황에서 발생한다. Partition의 크기가 프로세스의 크기보다 커서 메모리가 남지만, 다른 프로세스가 사용할 수 없는 상태를 말한다. 100MB의 공간(Partition)에 Process C를 할당했다. 20MB의 여유 메모리가 존재하지만 Process C 에게 할당되어 사용할 수 없다. 이를 내부단편화라고 한다. External Fragmentation(외부 단편화) 남아있는 메모리의 크기가 실행하고자 하는 프로세스보다 크지만, 연속적이지 않은 공간에 존재하여 실행하지 못하는 현상을 의미한다. 50MB의 두 여유 메모리가 존재하고 총 100MB의 여유 메모리가 존재한다. 그러나, 연속적이지 않은 공간에 존재하여 80MB인..

Computer Science/Operating System

Thread Pool(스레드 풀) / Monitor(모니터) / Fork-Join(포크-조인)

Thread를 단순하게 사용할 때 문제점 스레드는 생성 비용이 많이 든다. 스레드를 생성할 때마다 Kernel 레벨의 스레드와 연결해야 한다. Kernel의 작업이 필요하다. 스레드가 많아질수록 Context-Switching이 더 자주 발생하게 되어 CPU overhead가 증가한다. → Thread Pool을 사용하여 문제점을 해결한다. Thread Pool 스레드를 허용된 개수 안에서 사용하도록 제한하는 시스템을 말한다. 스레드의 최대 개수를 제한하고 미리 생성한다. 사용자로부터 들어온 요청을 작업 큐에 넣는다. 작업 큐에 들어 있는 작업을 스레드 풀의 스레드가 맡아 처리한다. 작업이 끝난 스레드는 다시 3번 과정을 진행한다. 장점 스레드를 재사용할 수 있기 때문에 새로운 스레드를 생성하는 비용을 ..

Computer Science/Operating System

Thread Safe(스레드 안전)

Thread Safe Race Condition 상황이 발생해도 실행에 문제가 생기지 않는 것을 의미한다. 하나의 함수가 한 스레드로부터 호출되어 실행 중일 때, 다른 스레드가 그 함수를 호출하여 동시에 함께 실행되더라도 각 스레드에서의 함수의 수행 결과가 올바로 나오는 것을 의미한다. Race Condition(경쟁 상태) 공유 자원에 대해 두 개 이상의 스레드가 동시에 읽거나 쓰는 상황을 의미한다. 접근의 순서에 따라 결과값에 영향을 주는 문제가 발생할 수 있다. Thread Safe를 지키는 방법 Re-entrancy(재진입성) 정적(전역) 변수를 사용하면 안 된다. 정적(전역) 변수의 주소를 반환하면 안 된다. 호출자가 호출 시 제공한 매개 변수만으로 동작해야 한다. 싱글톤 객체의 잠금에 의존하면..

Computer Science/Operating System

IPC(Interprocess Communication) 프로세스 간 통신

IPC(Interprocess Communication) 프로세스는 유저 영역의 독립된 공간에서 실행되어 서로간에 통신이 어렵다. 그러나, 협력해야 되는 경우가 발생한다. IPC 기법은 이러한 독립적인 프로세스들 간에 데이터 및 정보를 주고받기 위한 메커니즘을 말한다. 1. 공유 메모리(Shared Memory) 모델 주소 공간의 일부를 공유하는 방식이다. 일반적으로 OS는 프로세스 간 접근을 금지하는데, 이 제약 조건을 제거해야 한다. 시스템 콜을 통해 공유 메모리가 설정되고, 그 이후의 통신은 커널의 관여 없이 진행이 가능하다. 장점 커널의 관여가 없기에 속도가 빠르다. 양방향 통신이다. 단점 Producer-Consumer Problem 을 발생시킬 수 있다. 1. Producer가 기존의 data..

Computer Science/Operating System

Compile(컴파일)

프로그램을 컴파일하고 실행하는 방법은 크게 3가지로 나뉜다. 1. Compiler(컴파일러) 정적 컴파일 방식을 사용하는 언어 번역 프로그램이다. 런타임 전 소스 코드 전체를 미리 기계어로 변환하고 컴퓨터에서 실행한다. 다른 프로그램이나 하드웨어가 처리하기에 용이한 코드로 변환하기도 한다. 장점 실행 전에 미리 기계어로 변환했기 때문에 실행 속도가 빠르다. 단점 실행 파일 전체를 전송해야 하므로, 용량이 크다. 수정 후 실행하기 위해서는 컴파일 과정을 다시 거쳐야 한다. 특정 시스템에서 번역된 실행 파일은 다른 시스템에서 실행되지 않는다. 컴파일 언어 : C, C++, C#, Basic 등 2. Interpreter(인터프리터) 런타임에 프로그래밍 코드를 직접 한 줄씩 읽어가며 해당 기능에 대응하는 기계..

호준송
'운영체제' 태그의 글 목록