CS/운영체제

    메모리 계층과 캐시 메모리

    메모리 계층과 캐시 메모리

    깃헙 블로그에서 편하게 보기 Click! 메모리 CPU는 메모리에 올라와 있는 프로그램의 명령어들을 단순히 실행하기만 한다. 메모리는 어떻게 생겼을까? 메모리 계층 메모리 계층은 아래와 같은 구성 요소로 이루어져 있다. 레지스터 캐시 메모리 메인 메모리(주기억장치, RAM) 저장장치(보조기억장치, HDD, SDD) 레지스터는 CPU 내의 작은 메모리이다. 가장 속도가 빠른만큼 비싸고, 가장 용량이 적다. 캐시 메모리 역시 속도가 빠르지만 용량이 적다. 메인 메모리(주기억장치)는 속도도 보통, 용량도 보통이다. 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장한 후 이를 CPU에 전달하는 역할을 한다. 레지스터부터 메인 메모리까지를 상위 계층이라고 하며 전원이 꺼지면 데이터도 모두 사라지는 휘발성 저장..

    가상 메모리

    가상 메모리

    가상 메모리 가상 메모리(Virtual Memory)는 메모리 관리 기법의 하나로, 메모리를 추상화하여 사용자에게 무한한 크기의 메모리가 존재하는 것처럼 느끼게 만드는 것이다. 프로그램의 일부분이 메모리에 올라오도록 함으로써 보다 많은 개수의 프로세스를 메모리에 수용함과 동시에 아무리 큰 프로그램도 실행할 수 있다. 도메인 네임만 기억하고 있으면 DNS가 이 주소를 IP 주소로 알아서 변환해주는 것처럼, 메모리관리장치(MMU)가 가상 메모리 주소를 실제 메모리 주소로 매핑해주기 때문에 우리는 실제 주소를 의식할 필요없이 프로그램을 구축할 수 있다. 장점 프로그램의 전체가 메모리에 올라가지 않아도 실행 가능하다. 프로그램 입장에서는 물리적 메모리의 제약을 고려할 필요가 없다. 동시에 여러 프로그램을 실행하..

    메모리 관리 기법

    메모리 관리 기법

    메모리 관리 배경 다중 프로그래밍 시스템에서는 여러 개의 프로세스가 실행되고, 각 프로세스는 독립적인 메모리를 할당받아야 한다. 따라서 어떤 프로세스에게 어떤 식으로, 얼마나 메모리를 할당할 것인지 주기억장치를 동적 분할하는 메모리 관리 작업이 필요하다. 메모리 관리 기법 1️⃣ 교체 기법 1. Swapping 2️⃣ 할당 기법 1. 연속 할당 기법 1) 고정분할 방식(단편화) 2) 가변분할 방식 2. 불연속 할당 기법 1) 페이징(Paging) 2) 세그멘테이션(Segmentation) 3️⃣ 배치 기법 1. 최초 적합(First-Fit) 2. 최적 적합(Best-Fit) 3. 최악 적합(Worst-Fit) 교체 기법 - Swapping 스와핑(Swapping)은 현재 사용되지 않는 메모리 내용을 디스..

    멀티스레드

    멀티스레드

    멀티 스레드 일반적으로 하나의 프로세스는 하나의 스레드를 가지고 작업을 수행하게 된다. 멀티 스레드란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다. 멀티 스레딩의 장점 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유하므로, 시스템 자원의 낭비가 적다. 특히 스레드의 문맥 교환은 프로세스의 문맥 교환과 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다. 따라서 시스템의 처리율이 향상되고 자원 소모가 줄어들어 자연스럽게 프로그램의 응답 시간이 단축된다. 또한, 하나의 스레드가 작업을 할 때 다른 스레드가 별도의 작업을 할 수 있어 사용자와의 응답성도 좋아진다. 이러한 장점 때문에 여러 프로세스로 할 수 있는 작업들을 하나의 프로세스에서 스레드로 나눠 ..

    프로세스 vs 스레드

    프로세스 vs 스레드

    프로세스 프로세스(Process)는 컴퓨터에서 실행되고 있는 프로그램(A program in execution)을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 디스크와 같은 보조기억 장치에 단순히 저장되어 있는 프로그램은 in execution이 아니기 때문에 프로세스가 아니다. 디스크에 실행파일 형태로 존재하던 프로그램이 메모리에 올라가서 실행되기 시작해야 비로소 생명력을 갖는 프로세스가 된다. 프로세스는 CPU를 획득해 자신의 코드를 수행하기도 하고 때로는 CPU를 반환하고 입출력 작업을 수행하기도 한다. CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 같은 의미로 쓰인다. 프로세스 제어블록(PCB) 프로세스 제어블록(Process..