- File SystemOS
[운영체제] 파일 시스템
[운영체제] 파일 시스템 UNIX 파일 시스템은 File과 Directory 객체를 지원한다. 그런데 Directory는 사실 File의 특별한 형식이기 때문에 파일 시스템은 File의 표현을 위한 개념이라고 보면 된다. 대부분 파일 시스템은 data block들로 채워지며 이 블록에는 사용자의 파일들이 존재한다. 그리고 어떻게 이 데이터 블록들이 디스크에 저장되는지 알아보자! 디스크(보조 기억 장치)의 섹터 크기는 보통 512 bytes다. (요즘에는 대부분 4kb다!!) 그래서 data block의 크기는 이 512bytes(4 kb)보다 큰 게 속도적으로 좋아보이지만 실제로는 아주 많은 수의 작은 파일이 존재한다면 내부 단편화가 심해질 수 있다. 그래서 초기에는 파일의 모든 블럭을 큰 블록 크기(ex. 8kb)를 사용하고 마지막 블록만 작은 단(1kb)*n개를 사용하여 파일을 끝맺었다.(ex. 26kb 파일 => 8+8+8+1+1) 이러한 블록과 단편의 크기는 파일 시스템 생성시 결정할 수 있고, 본인의 파일 시스템 사용 목적에 따라 적절히 설정하면 좋다. 예를 들면 아래와 같은 방식으로 설정값을 고려하면 된다. 작은 파일이 많이 생성될 것으로 예상되면, 단편 크기를 작게 설정하는 것이 좋고 큰 파일을 자주 전송하는 경우에는 블록 크기를 크게 설정하는 것이 좋다. 구분 블록 (Block) 단편 (Fragment) 의미 파일 시스템의 기본 할당 단위 블록을 더 잘게 나눈 서브 단위 크기 보통 4KB, 8KB 등 블록보다 작음 (예: 512B, 1KB 등) 목적 빠른 디스크 접근 및 큰 파일 처리용 작은 파...2025-07-29 - I/O System운영체제
[운영체제] I/O Systems
[운영체제] I/O Systems 하드웨어는 연산과 I/O 작업을 번갈아가며 수행한다. 예를 들면 파일 수정작업 시에도 키보드로 입력되는 I/O 작업과 동시에, 정보를 파일에 기입하는 연산이 함께 수행한다. 오늘은 이 I/O 시스템을 OS에서 어떻게 처리하는지 설명하려고 한다. 1 I/O 하드웨어 OS 설계자는 컴퓨터에 연결할 아주 다양한 I/O 장치를 관리할 수 있도록 해야한다. 그래서 아주 다양한 디바이스를 구현하는데 일관된 인터페이스로 OS와 상호작용할 수 있도록 하는 것이 device driver(장치 드라이버)이다. 이 device driver는 OS의 I/O Subsystem에 일관된 인터페이스를 제공하며, System Call을 통해서 앱과 운영체제 사이에 표준 인터페이스를 제공하는 것과 같은 개념이다. I/O 하드웨어는 저장 장치(disk), 전송 장치(network, bluetooth), 인간 상호 작용 장치(모니터, 키보드, 마우스, 오디오) 등이 있다. 그리고 이 장치간 통신이우선 설명에 필요한 용어 정리부터 해보겠다. bus(버스): 여러 장치가 공유하는 전선 묶음과 통신 규약 daisy chain(데이지 체인): 장치를 순서대로 이어서 연결하는 방식(A->B, B->C 로 이어서 연결하는 방식) PCIe(PCI Express): 주변 기기(메모리, 그래픽 카드 등) 연결에 사용되는 고속 직렬 버스 SAS(Serial-Attached SCSI): 고속 저장 장치를 연결하는 직렬 버스 방식 Lane(레인): PCle에서 데이터를 송수신하는 통로로 한 개의 레인은 2쌍의 전선(수신용/송신용)...2025-07-22 - 프로세스스레드
[운영체제] 프로세스와 스레드
프로세스와 스레드 프로세스와 스레드를 설명하기 전에 프로그램(Program)에 대해서 알아야 한다. 프로그램은 "어떤 작업을 위해 실행될 수 있는 파일"로써 보조기억장치에 존재하여 실행되기를 기다리는 명령어와 정적 데이터 묶음이다. 프로세스란 프로그램이 실행되고있어 메모리(주기억 장치, 휘발성 메모리, RAM)에 올라온 인스턴스이다. 보조 기억장치(하드디스크, ROM)에 저장된 코드뭉치와 정적 데이터가 실행을 위해 메모리(RAM)에 할당된 것을 프로세스라고 보면 된다. 또는 프로세스는 운영체제로부터 시스템 자원을 할당받는 작업의 단위이며 실행된 프로그램을 의미한다. 프로세스는 Code, Data, Stack, Heap 영역 4부분으로 나눌 수 있다. 코드(Code): 함수 코드들이 존재 데이터(Data): 전역 변수와 Static 변수 저장 공간 스택(Stack): 코드 실행시 생성되는 지역 변수, 매개 변수, 리턴 주소등이 존재하는 영역(코드 실행을 위한 영역) 힙(Heap): 런타임 중에 동적할당되는 메모리 영역 "프로세스 내에서 실행되는 흐름의 단위"로써 프로세스가 할당받은 자원을 이용하는 실행 단위이다. 각 프로세스는 최소 1개 이상의 스레드를 할당받고, 코드, 데이터, 힙 영역은 프로세스 내에서 공유하고, 스택은 스레드별로 가지게 된다. 프로세스와 스레드는 PCB(Process Control Block)와 TCB(Thread control Block)의 정보를 통해 제어 된다. PCB는 메모리의 커널 영역에 있고, TCB는 PCB에 포함되어 있다. 메모리는 커널 영역에 PCB를 테이블 형태로 관리를 ...2025-07-15 - OSkernel
[운영체제] 운영체제와 커널
운영체제와 커널 컴퓨터의 응용 프로그램은 하드웨어에 접근할 수 있어야 한다. 그래야 하드디스크에 데이터를 저장하고 메모리에 프로세스를 올리고, CPU에서 그 메모리 정보를 가지고 데이터를 처리할 수 있다. 그리고 사용자는 GUI를 통해서 응용 프로그램을 실행할 수 있어야 한다. 그래야만 사용자와의 상호작용을 통해서 원하는 프로세스를 메모리에 올릴 수 있기 때문이다. 이러한 역할을 하는 것이 운영체제(OS)이다. 사용자 자원과 실행 단계를 계층적으로 커널 공간, 사용자 공간, 시스템 콜, 하드웨어로 나눌 수 있다. 사용자 공간은 시스템 콜 인터페이스를 통해 커널 영역에 접근할 수 있고, 커널 영역은 사용자 공간에서 사용한 시스템 콜 API에 따라 하드웨어를 조작하게 된다. 그런데 사용자 공간과 커널 공간이 나뉘어 있듯이, CPU도 사용자 모드와 커널 모드 2가지의 모드가 존재한다. 왜냐하면 사용자 모드에서 통제없이 하드웨어에 접근할 수 있으면 보안과 안정성에 문제가 생기며, 동일 자원에 여러 CPU가 접근할 때도 문제가 생길 수 있기 때문에 이를 특별히 관리할 필요가 있기 때문이다.아래 그림은 CPU가 이중 모드로 모드를 구분하여 명령어를 실행하는 그림이다. 응용 프로그램이 프리턴기를 쓰거나, 하드디스크에 입력하는 등의 커널 영역이 필요한 명령어를 사용하기 위해서 커널 모드에 진입하고, 다시 사용자 모드로 돌아온다. 1.1 운영체제 운영 체제는 컴퓨터 하드웨어와 응용 프로그램 사이에서 상호작용을 지원하고 관리하는 시스템 소프트웨어다. 운영체제는 하드웨어 자원(CPU, 메모리, 저장 장치 등)을 효율적으로 관리하...2025-06-27