프로세스 상태 생성 상태 준비 상태 실행 상태 대기 상태 종료 상태 생성 상태 이제 막 메모리에 적재되어 PCB를 할당받은 상태 준비가 완료되었다면 준비 상태로 준비 상태 당장이라도 CPU를 할당 받아 실행할 수 있지만 자신의 차례가 아니기에 기다리는 상태 자신의 차례가 된다면 실행 상태로 (= 디스패치) 실행 상태 CPU를 할당 받아 실행 중인 상태 할당된 시간 모두 사용 시(타이머 인터럽트 발생 시) 준비 상태로 실행 도중 입출력장치를 사용하면 입출력 작업이 끝날 때까지 대기 상태로 대기 상태 프로세스가 실행 도중 입출력장치를 사용하는 경우 입출력 작업은 CPU에 비해 느리기에 이 경우 대기 상태로 접어듦 입출력 작업이 끝나면 (입출력 완료 인터럽트를 받으면) 준비 상태로 종료 상태 프로세스가 종료된..
프로세스의 종류포그라운드 프로세스 (foreground process) 사용자가 볼 수 있는 공간에서 실행되는 프로세스 백그라운드 프로세스 (background process) 사용자가 볼 수 없는 공간에서 실행되는 프로세스 1. 사용자와 직접 상호작용이 가능한 백그라운드 프로세스 2. 사용자와 상호작용하지 않고 그저 정해진 일만 수행하는 프로세스: 데몬(daemon), 서비스(service) 프로세스 제어 블록 (PCB)프로세스들은 돌아가며 한정된 시간만큼만 CPU를 이용 자신의 차례에 정해진 시간만큼 CPU 이용 타이머 인터럽트(클럭 신호를 발생시키는 장치에 의해 주기적으로 발생하는 인터럽트)가 발생하면 차례를 양보한다빠르게 번갈아 수행되는 프로세스들을 관리하는데 사용하는 자료구조가 프로세스 제어 블..
커널운영체제가 제공하는 기능은 다양하지만가장 핵심적인 서비스는 존재한다예를 들어 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등...이러한 운영체제의 핵심 서비스를 담당하는 부분을 커널(kernel)이라고 한다 유저 인터페이스 (UI, User Interface)운영체제에는 속하지만 커널에는 속하지 않는 기능사용자와 컴퓨터 간의 통로일 뿐 운영체제의 핵심 기능(커널)은 아님 이중 모드응용프로그램이 자원에 직접 접근하는 것은 위험하다운영체제는 응용 프로그램들이 자원에 접근하려 할 때 오직 자신(운영체제)을 통해서만 접근하도록 하여 자원을 보호따라서, 응용 프로그램이 자원에 접근하려면운영체제에 도움을 요청(= 운영체제의 코드를 실행) 해야 한다 이러한 운영체제의 역할은 ..
운영체제 운영체제는 실행할 프로그램에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램 운영체제는 워낙 중요하기에일반적인 프로그램과는 달리메모리의 커널 영역에 적재되는 프로그램이다 운영체제의 기능 메모리 관리 CPU 관리 입출력장치 관리 따라서, 운영체제는 응용프로그램과 하드웨어를 연결운영체제를 배워야 하는 이유 운영체제는 프로그램을 위한 프로그램 그렇기에 프로그램을 만드는 개발자는 하드웨어와 가장 가까이 있는 운영체제를 잘 알아야한다 또한, 오류 메세지에 대한 깊은 이해가 필요한 경우 특히 중요하고 취업시장에서 개발자의 필수 지식으로 자리 잡고 있다
입출력 방식 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력 1] 프로그램 입출력 프로그램 속 명령어로 입출력장치를 제어하는 방법 입출력 명령어로써 장치 컨트롤러와 상호작용 프로그램 입출력 예시 메모리에 저장된 정보를 하드 디스크에 백업 (= 하드 디스크에 새로운 정보 쓰기) 1. CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령 내보내기 2. 하드 디스크 컨트롤러는 하드 디스크 상태 확인 > 상태 레지스터에 준비 완료 표시 3-1. CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부 확인 3-2. 하드 디스크가 준비되었다면 백업할 메모리의 정보를 데이터 레지스터에 쓰기 3-3. 아직 백업 작업(쓰기 작업)이 끝나지 않았다면 1번부터 반복, 쓰기 끝났다면 작업 종료 따라..
입출력장치 입출력장치는 앞서 학습한 CPU, 메모리보다 다루기가 더 까다롭다 입출력장치가 까다로운 이유 1. 입출력장치에는 종류가 너무나도 많다 장치가 다양하면 장치마다 속도, 데이터 전송 형식 등도 다양하다 > 다양한 입출력장치와 정보를 주고받는 방식을 규격화하기 어렵다 2. 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다 장치 컨트롤러 위와 같은 이유로 입출력장치는 장치 컨트롤러를 통해 컴퓨터와 연결된다 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신중개 오류 검출 데이터 버퍼링 + 버퍼링: 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법장치 컨트롤러의 구조여기서 상태 레지스터와 제어..
RAID의 정의 Redundant Array of Independent Disks 독립적인 하드 디스크와 SSD를 하나로 엮어서 사용하는 기술 데이터의 안정성 혹은 높은 성능을 위해 여러 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술 RAID 레벨 RAID를 구성하는 기술 RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5, RAID 6 그로부터 파생된 RAID 10, RAID 50,... RAID 0데이터를 단순히 나누어 저장하는 구성 방식 각 하드 디스크는 번갈아 가며 데이터를 저장한다 저장되는 데이터가 하드 디스크 개수만큼 나뉘어 저장 - 스트라입(stripe): 마치 줄무늬처럼 분산되어 저장된 데이터가 - 스타라이핑(striping): 분산..
플래시 메모리 전기적으로 데이터를 읽고 쓰는 반도체 기반 저장 장치 ex. usb, sdd.. 범용성이 넓기에 보조기억장치에 '만' 속한다고 보기는 어려움 플래시 메모리의 회로 NAND 플래시 메모리: 우리가 여기서 언급하고 설명하는 플래시 메모리 NOR 플래시 메모리 플래시 메모리의 종류 한셀에 1비트를 저장할 수 있는 플래시 메모리 : SLC 2비트를 저장할 수 있는 플래시 메모리 : MLC 3비트를 저장할 수 있는 플래시 메모리 : TLC 4비트를 저장할 수 있는 플래시 메모리 : QLC SLC 한 셀로 두 개의 정보 표현 비트의 빠른 입출력 긴 수명 용량 대비 고가격 MLC 한 셀로 네 개의 정보 표현 (대용량화 유리) SLC보다 느린 입출력 SLC보다 짧은 수명 SLC보다 저렴 시중에서 많이 사..
하드 디스크 자기적인 방식으로 데이터 저장 하드 디스크의 구성 하드 디스크의 저장 단위 - 트랙, 섹터 기본적으로 트랙(track)과 섹터(sector) 단위로 데이터 저장 섹터의 크기: 512 바이트 ~ 4096 바이트 하드 디스크의 저장 단위 - 실린더 실린더는 여러 겹의 플래터 상에서 같은 트랙이 위치 한 곳을 모아 연결한 논리적 단위이며 연속된 정보는 한 실린더에 기록된다 하드 디스크의 데이터 접근 과정 하드디스크가 저장된 데이터에 접근하는 시간 - 탐색 시간 (seek time) : 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간 - 회전 지연 (rotational latency) : 헤드가 있는 곳으로 플래터를 회전시키는 시간 - 전송 시간 (transfer time) : 하드 디스..
저장 장치 계층 구조각기 다른 용량과 성능의 저장 장치들을CPU에 얼마나 가까운지를 기준으로 계층화하여 표현한 구조CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다 저장 장치 계층 구조를 영문으로 나타내면 memory hierarchy, 메모리 계층 구조를 의미한다여기서 메모리는 RAM이 아닌 일반적인 저장 장치를 의미한다따라서 이 설명에서는 용어의 혼동 방지를 위해 저장 장치 계층 구조라고 표현한 것 캐시 메모리CPU와 메모리 사이에 위치한 레지스터 보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장장치 캐시 메모리 종류1) 계층적 캐시 메모리 (L1 - ..