no image
[OS] Kernel
커널의 기능 프로세스 관리 메모리 관리 파일 시스템 관리 입출력 관리 프로세스 간 통신 관리 커널의 구성 응용 프로그램 시스템 호출 인터페이스 커널 하드웨어 커널의 종류 모노리틱 커널(단일형 커널) 마이크로 커널 하이브리드 커널 모노리틱 커널 초창기 구조 커널에서 제공할 수 있는 다양한 기능을 단일한 커널 공간에 구현 모듈 간의 통신 비용이 줄어들어 성능이 좋음 모듈이 상호 의존 유지보수가 어려움 오류 발생 시 시스템 전체가 위험해질 수 있음 복잡하고 구현이 어려움 유닉스, 리눅스, BSD, 솔라리스, 윈도 NT 등 마이크로 커널 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등의 기본적인 기능만 제공 나머지는 사용자 영역에서 구현 모듈 크기가 작아서 안정성이 높음 오류가 나도 전체 시스템에 영향..
2024.02.27
no image
[OS] 메모리
메모리 오버레이와 스왑 RAM이 작을 때 여러 프로세스를 쌓아서 실행 연산이 필요한 프로세스는 RAM에 적재하고 상대적으로 필요하지 않는 프로세스는 보조기억장치의 스왑영역에 저장 ex) 절전 모드로 전환할 때, RAM에서의 프로세스 상태를 보조기억장치에 저장(스왑인) 메모리 분할 방식 가변 분할 방식 : 프로세스의 크기대로 쌓음, 빈 공간 관리가 힘듦 -> 프로세스가 종료되면 외부 단편화 발생 가능 고정 분할 방식 : 일정 크기의 페이지 단위로 프로세스를 분할해서 쌓음, 페이지 단위가 프로세스와 차이가 크면 낭비 공간이 큼 -> 내부 단편화 발생 가능 가상 메모리 한정적인 메모리 공간을 사용자에게 더 많이 제공하기 위해 가상 주소 사용 메모리 관리 장치는 테이블을 이용해 가상 주소를 실제 데이터가 담겨 ..
2024.02.01
no image
[OS] 교착상태
교착상태(Deadlock) 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황 발생조건 비선점 상호배제 순환대기 점유대기 해결방법 높은 우선순위의 프로세스가 해당 자원을 선점할 수 있게 하기 한 번에 여러 프로세스가 공유 자원 접근 가능하게 하기 자원을 순환 형태로 대기시키지 않고 한 쪽 방향으로만 요구할 수 있도록 하기 실행에 필요한 모든 자원을 한번에 요구
2023.12.18
no image
[OS] IPC
IPC(Inter Process Communication) Process는 각자 독립된 공간을 가지고, 외부 접근을 허용하지 않도록 OS가 보장 커널 영역에서 이루어지는 프로세스 간 통신 memory 기반(고정 길이)과 file 기반(가변 길이)이 있음 네트워크로 확장되면 소켓, RPC 윈도우는 registry 기반도 있음 Shared Memory memory 기반 두 프로세스의 가상 메모리가 실제로 같은 물리적 메모리를 사용할 때 한 쪽의 처리가 끝날 때까지 기다렸다가 처리 반대로도 마찬가지 Pipe file 기반 두 프로세스를 연결해 한쪽은 읽고, 한쪽은 쓰는 방식 직렬하는 데이터를 보낼 때 유리 임계구역(Critical Section) 둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원(memo..
2023.12.18
no image
[OS] 스케줄링
스케줄링(Scheduling) 시스템의 부하 상태를 막으면서 CPU의 처리량 최대화를 위해서 수행 고수준 스케줄링 : 한번에 수행할 양을 조절 저수준 스케줄링 : job에 따라 수행할 순서 등을 미세하게 조절 선점형(Preemptive) 방식, 비선점형(Non-Preemptive) 방식 방식 FCFS(First Come First Served) : 준비 큐에 도착한 프로세스 순서대로 CPU를 할당하는 방식, 비선점 방식 라운드 로빈(Round-Robin) : FCFS와 비슷하지만, 프로세스마다 CPU 사용 시간을 일정하게 할당하여 시간이 지나면 다음 프로세스에게 CPU 사용권을 넘김, 선점 방식 SJF(Shortest Job First) : 준비 큐에 대기하고 있는 프로세스 중 예상 실행 시간이 가장 짧..
2023.12.18
no image
[OS] Process와 Thread
프로그램 어떤 작업을 위해 실행할 수 있는 파일 프로세스 프로그램을 실행해 운영체제로부터 시스템 자원(CPU와 RAM)을 할당받는 작업의 단위, 프로그램의 인스턴스 프로세스가 유저모드에서 실행되면 커널이 메모리를 할당해줌 -> 이때 실제 메모리가 아니라 가상 메모리(RAM + HDD)를 할당해줌 각각 독립된 메모리 영역(code, data, stack, heap)을 할당 받음 한 프로세스는 다른 프로세스의 변수나 자료 구조에 접근 불가능, IPC를 사용해야함 운영체제는 프로세스를 PCB(Process Control Block)라는 곳에 필요한 정보를 넣어두고 관리함 스레드 프로세스가 할당받은 자원을 이용하는 실행의 단위 -> 스레드는 해당 자원으로 제한됨 스레드마다 stack(통상적으로 1MB) , 레지..
2023.12.15
no image
[OS] 운영체제
컴퓨터의 자원을 효율적으로 관리하고, 사용자가 컴퓨터를 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램의 모임 메모리, 프로세스, 입출력 등을 관리하고 사용자 인터페이스를 제공 리눅스, 윈도우 등 ※ 파일은 커널 모드의 구성 요소에 접근하기 위한 인터페이스 -> tcp/ip에 접근하기 위한 파일이 socket Shell과 Kernel Shell : 사람이 이해하기 쉬운 형태의 명령어를 입력하면 이를 해석해서 커널에 전달해주는 역할 Kernel : 사용자가 쉘을 통해 입력한 명령어를 기계가 이해할 수 있는 표현으로 바꾸어 전달해주는 역할, 하드웨어를 제어하고 시스템 자원 관리 유저모드와 커널모드 유저모드 : 유저가 접근할 수 있는 영역을 제한두고, 프로그램의 자원에 함부로 침범하지 못하는 모드 커널모..
2023.12.15
no image
[OS] 컴퓨터 구성
프로그램을 실행하면 보조기억장치에 저장된 데이터를 주기억장치로 불러와 cpu가 데이터를 처리 연산장치 cpu(central processing unit) 기억장치 주기억장치 rom(read only memory) : 비휘발성 ram(random access memory) : 휘발성 보조기억장치 HDD(hard disk driver) : 물리적인 디스크를 회전시켜 데이터를 저장 SSD(solid state driver) : 전기적으로 데이터를 저장 캐시와 레지스터 캐시 : cpu와 별도로 존재해 메인 메모리와 cpu 간의 속도 차이를 극복하기 위한 공간 -> cpu가 필요할 데이터를 미리 가지고 있음(예측) ※ 이로 인해서 Meltdown, Spectre와 같은 공격이 생김 -> 어떤 데이터를 요청했을 때..
2023.12.15