CS/Operating System

페이지 교체페이지 부재(Page Fault)가 발생하면, 요청된 메모리를 디스크에서 메모리로 읽어와야한다.물리 메모리에 올라와 있는 페이지 중 하나를 선택해서 디스크의 스왑 영역으로 보내는 것 페이지 교체 알고리즘어떠한 프레임에 있는 페이지를 디스크의 스왑 영역으로 보낼 것인지를 결정하는 알고리즘알고리즘의 목표는 페이지의 부재율를 최소화하기 위함이다.프레임: 물리 메모리를 일정한 크기로 나눈 블록페이지: 가상 메모리를 일정한 크기로 나눈 블록 FIFO 알고리즘메모리에 먼저 올라온 페이지를 먼저 내보내는 알고리즘out 되는 페이지는 가장 먼저 메모리에 올라온 페이지 OPT 알고리즘Optimal 알고리즘, 앞으로 가장 사용하지 않을 페이지를 가장 우선적으로 내보냄FIFO에 비해 페이지 결함의 횟수를 많이 감..
CPU 접근 메모리 범위우리가 32-bit, 64-bit CPU라는 이야기를 많이 들어봤을 것이다. 여기서 말하는 32bit, 64bit란 CPU가 메모리에 접근할 수 있는 주소 범위를 의미한다. 32bit라고 하면 2^32 = 4 * 1024 * 1024 * 1024이므로, 4GB의 메모리를 접근할 수 있다.64bit라고 하면 2^64 = 16 * 1024 * 1024 * 1024 * 1024 * 1024 * 1024이므로 테라보다 더 큰 단위를 가지는 메모리에 접근할 수 있다.즉, 64bit CPU는 IPv6처럼 우리가 죽을 때까지는 더 큰 bit를 접근할 수 있는 CPU가 나오지 않을 것이라고 생각한다. 가상 메모리CPU가 가상 주소로 메모리에 접근을 시도하면 MMU(Memory Management..
CPU SchedulingCPU는 여러 작업을 동시에 수행할 수 없지만, 처리해야할 작업(Process)은 다수이기 때문에, 적절한 스케쥴링을 통해서 작업을 수행한다.(멀티 코어 CPU인 경우 여러 작업을 동시에 처리할 수 있지만, 단일 코어로 가정한다) 아주 단순한 스케쥴링으로는 먼저 들어온 작업이 수행되는 것이다. 하지만, 빨리 처리해야하는 작업이 오래 기다릴 수 있고 처리에 아주 짧은 시간이 소요되는 작업도 다른 작업에 밀려서 오래 기다려야하는 비효율이 발생할 수 있다. 따라서, CPU 스케쥴링은 다양한 알고리즘을 적용해서 합리적으로 작업을 수행한다. 비선점형 스케쥴링어떤 프로세스가 다른 프로세스가 점유 중인 CPU를 사용할 수 없다.(가로챌 수 없다.)즉. 먼저 작업 중이던 프로세스가 CPU를 놓..
교착상태(Dead Lock)두 개 이상의 프로세스(또는 스레드)가 하나의 자원을 공유하여 사용하고 있을 때 서로가 사용중인 자원을 요구하지만, 요구를 영원히 들어줄 수 없는 상태 필요조건조건 중 하나를 성립하지 않을 경우 교착상태는 발생하지 않음아래 조건들이 성립해도 교착상태가 발생하지 않을 수 있다. 상호배제(Mutual Exclusion)하나의 프로세스가 공유 자원을 점유하고 있을 때 다른 프로세스는 기다려야함(서로 다른 프로세스가 하나의 공유자원을 동시에 점유할 수 없음) 점유와 대기(Hold and Wait)특정 프로세스가 공유 자우너을 점유한 상태에서 다른 공유 자원을 사용하기 위해 대기하고 있는 상황이 있어야 함 비선점(No preemption)선점 가능한 자원은 프로세스가 다른 프로세스가 ..
동시성 이슈(Race Condition)동일한 프로세스 내에 2개 이상의 Process 혹은 Thread가 동시에 동일한 자원(공유 자원)을 변경하려고 할 때, 개발자가 의도하지 않은 방향으로 데이터 변경이 발생 예시계좌에 5000원이 있을 때,Thread1은 2000원을 입금해서 7000원으로 변경하려고 한다.Thread2는 3000원을 출금해서 2000원으로 변경하려고 한다.올바른 결과는 5000 + 2000 - 3000 = 4000원이다.하지만, 동시에 읽고 그 값을 변경하다보면 결과는 7000원이 되거나 2000원이 될 수 있다.(돈이 사라지거나, 더 많아질 수 도 있다.) 공유 자원각 Process 혹은 Thread가 동시에 접근할 수 있는 자원, 변수 임계 영역(Critical Section)..
Multi Process하나의 응용프로그램(서비스)에서 다수의 프로세스를 실행하는 것하나의 부모 프로세스는 자식 프로세스를 생성한다.(부모 - 자식 관계)각 프로세스는 독립적인 메모리 공간을 사용하기 때문에, 하나의 프로세스에서 문제가 발생한 경우, 다른 프로세스에게 영향을 줄 가능성이 적다.가령, 서버에서 동일한 서버 역할을 수행하는 프로세스를 다수 생성해서, 하나의 프로세스가 문제가 생겨도 다른 프로세스를 사용해서 서비스의 안정성을 확보한다.Context Switching에 대한 오버헤드가 있다.(자원을 많이 사용)Process 사이에서는 IPC(Inter Process Communication)를 통해 자원(메모리)을 공유한다. Multi Thread하나의 프로세스에서 다수의 스레드를 생성해 실행하..
프로세스(Process)프로그램이 실행중인 상태, 작업 중인 프로그램을 말한다.응용프로그램 혹은 서비스가 Memory(RAM)에 적재되고 CPU를 할당 받아서 실행되는 것Memory 적재 및 CPU 할당은 운영체제가 한다.프로세스 실행과 관련된 전반적인 정보를 PCB에 저장한다.운영체제는 Context Switching을 통해 기존에 수행 중이던 프로세스에 대해 PCB에 백업하고 새로운 수행 프로세스에 대해 PCB에 로드한다. 메모리 영역메모리 영역설명저장되는 내용특징코드(Code)실행될 프로그램의 기계어 코드가 저장되는 영역함수, 메서드, 실행 코드 등읽기 전용(수정 불가) 모든 스레드에서 공유됨데이터(Data)초기화된 전역변수, 정적변수가 저장되는 영역int a = 10;같이 초기값이 있는 전역/정적..
운영체제란?컴퓨터 시스템의 핵심 소프트웨어로 컴퓨터 하드웨어와 응용프로그램 간의 상호작용을 관리하고 제어하는 역할을 한다.운영체제의 목적은 사용자와 하드웨어 사이의 인터페이스를 제공해 효율적으로 응용프로그램이 동작할 수 있도록 지원하고 시스템 자원(CPU, 메모리, 디스크, I/O)을 효율적으로 관리하여 응용프로그램이 원활하게 동작할 수 있도록 한다.운영체제의 코어(핵심) 부분은 커널(kernal)이라고 하고 시스템 자원 관리와 하드웨어와의 직접적인 상호작용을 담당한다. 역할자원 관리운영체제는 컴퓨터 시스템의 하드웨어 자원을 효율적으로 관리하는 역할을 한다. CPU(중앙처리장치), Memory(메모리), 저장 장치(SSD, HDD), 입출력 장치(I/O 장치) 등 하드웨어 자원을 할당하고 관리하여 여러..
gretea5
'CS/Operating System' 카테고리의 글 목록