1. 프로세스 우선순위와 스케줄링 큐 스케줄링 모든 프로세스(및 스레드)는 실행되기 위해 자원을 필요로 한다. 운영체제가 공정하고 합리적으로 자원을 배분하는 방법 ==> CPU 스케줄링 (자원 > CPU) 프로세스마다 우선순위가 다르므로 정해진 시간동안 돌아가면서 CPU를 사용하는 것이 가장 좋은 것은 아니다. $ps -el PRI, NI가 낮을수록 높은 우선순위 $top PR, NI가 낮을수록 높은 우선순위 우선순위의 차이를 보이는 대표적인 프로세스 유형 I/O bound process, CPU bound process CPU 스케줄링 알고리즘 프로세스 우선순위를 토대로 CPU 할당 받는 방법 스케줄링 큐 자원은 한정되어 있고 실행 중인 프로세스는 여러 개 프로세스들의 요구사항을 일목요연하게 관리하는 ..
1. 커널 영역과 사용자 영역의 프로세스 프로세스란 실행 중인 프로그램 ==> 같은 프로그램도 별도의 프로세스가 될 수 있다. 프로세스 제어 블록 (PCB) PID(PPID) 레지스터 스케줄링 정보 메모리 정보 사용한 파일 정보 입출력장치 정보 문맥 교환 문맥 (context): 실행을 재개하기 위해 기억해야 할 정보 문맥 교환: 여러 프로세스들이 번갈아가며 실행되는 원리 커널 영역에서는 PCB 사용자 영역 코드 영역 (텍스트 영역) > 실행 가능한 코드, 기계어로 이루어진 명령어 > Read-only 데이터 영역 > 프로그램이 실행되는 동안 유지할 데이터 (e.g. 전역 변수) > BSS 영역: 프로그램 실행 동안 유지할 데이터 중 초기값 없는 데이터 힙 영역 > 사용자(개발자)가 직접 할당 가능한 공..
1. 운영체제의 역할 리소스를 관리하고 할당하는 특별한 프로그램 운영체제 종류 ==> Windows, macOS, android, Linux, iOS 커널(kernel): 운영체제의 핵심부 이중 모드 커널 모드: 운영체제 서비스를 제공받을 수 있는 모드 (입출력 가능) ==> 시스템 콜: 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 것(소프트웨어 인터럽트) 사용자 모드: 운영체제 서비스를 제공받을 수 없는 모드 (입출력 불가능)| ==> 현재는 여러 단계로 나눈 권한: 보호 링(protection ring)으로 관리한다. 운영체제 핵심 서비스 프로세스 관리 자원 관리 접근 및 할당 CPU 메모리 보조기억장치 & 입출력장 파일 시스템 관리
1. 하드 디스크와 플래시 메모리 대표적인 보조기억장치 (하드 디스크, HDD) 플래시 메모리 (SSD, USB 메모리, SD 카드) 하드 디스크 (LP, CD/DVD 플레이어와 유사) 플래터: 하드 디스크 상에서 실질적으로 데이터가 저장되는 부분 스핀들: 플래터를 회전시키는 부분 헤드: 플래터의 데이터를 읽고 쓰는 부분 디스크 암: 헤드를 옮기는 부분 > 복수의 헤드와 플러터가 있는 경우가 많음 > 플래터의 양면을 사용하는 경우가 많음 하드 디스크의 데이터 단위 트랙: 플래터 상의 동심원 섹터: 트랙을 나눈 단위 (가장 작은 단위) 실린더: 여러 개의 트랙을 모은 단위 블록: 실제 입출력이 수행되는 단위 하드 디스크의 지연 시간 탐색 시간: 헤드를 원하는 섹터까지 이동시키는 시간 회전 지연: 원하는 섹..
1. RAM과 ROM RAM (Random Access Memory) : 휘발성 저장장치 RAM의 크기와 성능 간의 관계: 많은 프로그램을 동시에 빠르게 실행하는 데에 유리 RAM의 종류 DRAM(Dynamic RAM): 시간이 지나면 점차 저장된 데이터가 사라지는 RAM (메인 메모리에서 주로 사용) > 재충전: 필요 > 속도: 느림 > 가격: 저렴함 > 집적도: 높음 > 소비전력: 적음 > 사용 용도: 주기억장치 (RAM) SRAM(Static RAM): 시간이 지나도 저장된 데이터가 사라지지 않는 RAM (캐시 메모리에서 주로 사용) > 재충전: 필요 없음 > 속도: 빠름 > 가격: 비쌈 > 집적도: 낮음 > 소비전력: 높음 > 사용 용도: 캐시메모리 SDRAM(Synchromous Dynamic ..
1. CPU의 구성 요소 세 가지 ALU (산술논리연산장치): 연산을 수행하는 장치 (계산을 담당하는 회로) 레지스터로부터 피연산자(연산의 대상)을 받아들이고 제어 장치로부터 제어 신호(연산할 작업)를 받아들인다. 연산의 결과를 레지스터, 플래그 레지스터에 저장한다. ==> 플래그 레지스터: 연산의 결과에 대한 부가 정보 > 부호 플래그 - 연산한 결과의 부호를 나타낸다. > 제로 플래그 - 연산 결과가 0인지 여부를 나타낸다. > 캐리 플래그 - 연산 결과 올림수나 빌림수가 발생했는지 여부를 나타낸다. > 오버플로우 플래그 - 오버플로우가 발생했는지 여부를 나타낸다. > 인터럽트 플래그 - 인터럽트가 가능한지 여부를 나타낸다. > 슈퍼바이저 플래그 - 커널 모드로 실행 중인지, 사용자 모드로 실행 중인..