가상 메모리 등장 배경 가상 메모리 프로그램이 실행될 때 물리적 메모리(RAM)보다 큰 메모리 공간을 사용하도록 하는 기술 (물리적 메모리 크기의 한계를 극복) 기존에는 프로세스가 실행되는 코드 전체를 메모리에 로드해야 했고, 메모리 용량보다 더 큰 프로그램은 실행할 수 없었음 하지만 실제로는 코드의 일부에서만 대부분의 시간을 사용하고, 프로세스는 특정 순간에는 항상 작은 양의 주소 공간을 사용하기 때문에 이러한 방식은 매우 비효율적 가상 메모리(Virtual Memory)는 이러한 물리적 메모리 크기의 한계를 극복하기 위해 나온 기술 프로세스를 실행할 때 실행에 필요한 일부만 메모리에 로드하고 나머지는 디스크에 둠 (대게 page로 관리) 프로세스 전체가 물리적 메모리에 있는 것 '처럼' 수행, 즉 물..
메모리 관리 배경 프로그램은 반드시 메모리로 불러와야 실행할 수 있다! 💡CPU가 직접 접근할 수 있는 유일한 저장 공간 = Main Memory , registers Register → 1 CPU clock (or less) 에 접근 가능 (굉장히 빠른 저장 공간) Main memory → many cycles (*memory stall : main memory에 접근 하는 메모리 멈춤 시간) 중간에 cache(register 보다는 느리고, main memory 보다는 빠름!!)를 사용함으로써 메모리 접근 시간을 줄일 수 있다!! ( = 메모리 효율을 높일 수 있다!!) 💡 보조 기억장치(하드디스크) → 주 기억장치(메모리) → CPU 프로세스는 독립적인 메모리 공간(Stack, Data, Code,..
DeadLock 일련의 프로세스들이 서로가 가진 자원을 기다리며 block 되어 더 이상 진행이 될 수 없는 상태 ( * LiveLock : 스레드가 정체된 상태는 아니지만 계속 시도해도 진행이 안되는 경우 ) Deadlock Characterization : deadlock이 일어나기 위한 4가지 필요조건으로, deadlock이 일어난 경우 아래 조건을 모두 만족한다! 1. Mutual exclusion (상호 배제) : 단독으로 사용해야하는(공유가 불가능한) 자원이 적어도 하나 존재 2. Hold and wait (점유 대기) : 어떤 자원을 획득한 상태에서 다른 자원을 기다리는 상태 3. No preemption (비선점) : 본인인 스스로 더 이상 진행되지 않음에도 불구하고 가지고 있던 자원을 놓..
동기화 vs 비동기화1. 동기화(Synchronous) 동시에 일어나서, 결과가 그 자리에서 주어짐설계가 매우 간단하고 직관적결과가 주어질 때까지 아무것도 못하고 대기해야 함2. 비동기화(Asynchronous)동시에 일어나지 않아서, 결과가 그자리에서 주어지지 않음동기화보다 복잡함결과가 주어지는데 시간이 걸리지만, 그 동안 다른 작업을 할 수 있어서 자원을 효율적으로 사용할 수 있음 Race Condition: 여러 프로세스들이 동시에 데이터에 접근할 때 어떤 순서로 접근하느냐에 따라 결과 값이 달라질 수 있는 상황 공유 데이터의 동시 접근(Concurrent access)은 데이터의 불일치 문제를 발생시킬 수 있음Race condition을 막고, 일관성을 유지하기 위해 협력 프로세스 간의 실행 순서..
스케줄링 OS는 CPU 등의 자원을 프로세스에 적절히 배정함으로써 시스템의 성능을 개선할 수 있음 프로세스가 작업을 수행하려면 스케줄러로부터 cpu를 할당 받아야 함 프로세스 실행 = (CPU 실행 + I/O 대기) 의 사이클 = CPU - I/O Burst Cycle CPU Scheduling = CPU 를 잘 사용하기 위해 프로세스를 잘 배정하기 ! 프로세스를 스케줄링하기 위한 Queue 프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재함 Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의..
메모리 구조 코드 영역: 실행할 프로그램의 코드 데이터 영역: 전역 변수, 정적 변수 (프로그램 시작과 동시에 할당, 프로그램이 종료되어야 소멸) 힙 영역: 사용자의 동적 할당 스택 영역: 지역 변수, 매개 변수 (함수 호출 시 ! 함수 호출이 완료되면 사라짐) 프로세스 (Process) : 메모리에 올라와 실행되고 있는 프로그램 (OS는 모든 프로그램을 프로세스 형태로 실행함) OS로 부터 독립된 영역을 할당 받음 (통신을 위해서는 IPC: Inter-Process Communication 사용) 프로세스는 최소 한개의 쓰레드 (메인 쓰레드)를 가짐 new(생성), running(실행), waiting(I/O, event wait, waiting-> ready), ready(by interrupt), ..
운영체제 (Operating System) : 하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공하는 프로그램 운영체제의 역할 1. 프로세스 관리 2. 저장장치 관리 1차 저장장치(Main Memory) 프로세스에 할당하는 메모리 영역의 할당과 해제 메인 메모리의 효율적 활용을 위한 가상 메모리 기능 2차 저장장치(HDD, NAND Flash Memory 등) 파일 형식의 데이터 저장 파일 데이터 관리를 위한 파일 시스템을 OS에서 관리 ( FAT, NTFS, EXT2, JFS, XFS 등 ) 3. 네트워킹 : 응용 프로그램이 네트워크를 사용하려면 운영체제에서 네트워크 프로토콜을 지..