CS 37

운영체제의 파일 시스템

파일 시스템이란?운영체제의 파일 시스템(File System)은 저장 장치(HDD, SSD 등)에 데이터를 논리적 단위인 파일과 디렉토리 형태로 저장, 조직, 관리하는 핵심 기능입니다. 물리적인 블록 수준의 데이터 저장을 사용자 친화적인 인터페이스로 추상화하여, 사용자가 파일 단위로 데이터를 쉽게 접근하고 조작할 수 있도록 합니다.주요 역할데이터 조직화데이터를 파일 단위로 나누고, 관련 파일을 디렉토리(폴더) 구조로 계층화하여 관리합니다.디렉토리는 트리 구조를 갖고 있으며, 루트 디렉토리를 기준으로 하위 디렉토리와 파일이 구성됩니다.파일 접근 및 조작 기능 제공파일의 생성, 읽기, 쓰기, 수정, 삭제와 같은 기본 연산을 제공합니다.각 파일에 대해 접근 권한(R/W/X)을 설정하여 보안을 유지합니다.접근 ..

CS/운영체제 2025.05.07

운영체제의 메모리 관리

메모리 관리 개요컴퓨터에서 메모리는 일반적으로 다음과 같은 구조로 나뉘어 관리됩니다:코드(Code): 프로그램의 실행 명령어가 저장되는 영역데이터(Data): 전역 변수, 정적 변수가 위치하는 영역힙(Heap): 동적 메모리 할당이 이루어지는 영역, 크기가 유동적스택(Stack): 함수 호출 시 사용되는 지역 변수, 매개변수 등이 저장되는 영역운영체제의 메모리 관리 기능은 이러한 구조를 기반으로 하여 한정된 물리 메모리를 여러 프로세스가 효율적이고 안전하게 공유할 수 있도록 관리하는 역할을 수행합니다. CPU가 명령어를 실행하려면 그에 필요한 코드와 데이터를 메모리에 올려야 하므로, 메모리 관리 기능은 운영체제의 핵심 기능 중 하나입니다.메모리 관리의 주요 기능메모리 할당과 해제프로세스가 실행되기 위해 ..

CS/운영체제 2025.05.07

운영체제의 프로세스 관리

프로세스 관리 개요프로세스 관리는 운영체제의 핵심 기능 중 하나로, CPU와 메모리 등의 자원을 효율적으로 분배하여 여러 프로그램(프로세스)이 동시에 실행될 수 있도록 지원합니다. 프로세스란 실행 중인 프로그램의 인스턴스를 의미하며, 운영체제는 프로세스의 생성, 종료, 스케줄링, 동기화 등을 담당합니다.프로세스의 구성 요소코드 (Code): 프로세스의 텍스트 섹션에 해당하는 부분으로, 실제 실행되는 명령어(기계어 코드)를 포함합니다. 이는 프로그램의 논리적 동작을 정의하며, 읽기 전용으로 메모리에 적재됩니다.데이터 (Data): 전역 변수 및 정적으로 할당된 변수가 저장되는 메모리 영역입니다. 초기화된 데이터(.data)와 초기화되지 않은 BSS(.bss) 영역으로 구분되며, 프로그램이 실행되면서 값이 ..

CS/운영체제 2025.04.30

커널

커널 개요 커널은 운영체제의 핵심 구성 요소(Core Component)로, 하드웨어 자원을 직접 관리하고 사용자 프로그램이 이 자원에 안전하게 접근할 수 있도록 중재하는 역할을 합니다. 커널은 하드웨어와 소프트웨어 사이의 추상화 계층(Abstraction Layer)을 제공하여 하드웨어의 복잡한 동작을 숨기고, 프로그램이 표준화된 인터페이스를 통해 하드웨어 기능을 사용할 수 있게 합니다. 또한 커널의 주요 목적은 자원 공유(Resource Sharing)와 자원 보호(Resource Protection)로, 여러 프로그램이 동시에 시스템 자원을 효율적이고 안전하게 사용할 수 있도록 보장하는 것입니다.커널의 주요 구성 요소프로세스 관리자 (Process Manager)프로세스 생성, 종료, 스케줄링, 상..

CS/운영체제 2025.04.23

운영체제

운영체제란?운영체제(OS, Operating System)는 하드웨어와 소프트웨어 사이에서 중재자 역할을 하는 시스템 소프트웨어입니다. 사용자가 하드웨어를 직접 제어하지 않고도 프로그램을 실행하거나 자원을 관리할 수 있도록 지원합니다.주요 역할하드웨어 자원 관리 (CPU, 메모리, 디스크, 네트워크 등)프로세스 관리 (프로그램 실행, 스케줄링, 동기화 등)파일 시스템 관리 (데이터 저장 및 접근)사용자 인터페이스 제공 (CLI, GUI)보안 및 접근 제어 (인증, 권한 관리)운영체제 종류Windows: GUI 기반, 마이크로소프트Linux: 오픈소스, 유닉스 계열, 서버 및 개발 환경macOS: 애플, 유닉스 기반 GUIUnix: 멀티태스킹, 멀티유저 시스템모바일 OS: Android, iOS운영체제 구..

CS/운영체제 2025.04.22

HTTP 정리

HTTP 개요1. HTTP란 무엇인가?HTTP(HyperText Transfer Protocol)는 웹 브라우저와 서버 간에 문서(리소스)를 주고받기 위한 비연결성(stateless) 기반의 애플리케이션 계층 프로토콜이다. 클라이언트가 요청(Request)을 보내고, 서버가 응답(Response)을 반환하는 요청-응답 구조로 동작한다.기본 포트: 80 (HTTPS는 443)프로토콜 버전: HTTP/1.0, HTTP/1.1, HTTP/2, HTTP/3 등이 존재2. HTTP의 요청과 응답 구조HTTP 통신은 크게 **요청(Request)**과 **응답(Response)**으로 구성된다. 요청과 응답 메시지는 각각 요청라인/상태라인, 헤더, 본문으로 구성된다.요청 메시지 구조(빈 줄)요청라인: 메서드(GET..

CS/네트워크 2025.04.22

WebSocket 정리

WebSocket 개요1. 웹 환경에서의 실시간 통신 프로토콜WebSocket은 웹 브라우저와 서버 간의 실시간 양방향 통신을 가능하게 하는 프로토콜이다. 일반적인 HTTP 요청-응답 구조와 달리, WebSocket은 연결을 유지하면서 클라이언트와 서버가 자유롭게 데이터를 주고받을 수 있다.2. HTTP 핸드셰이크로 연결 시작WebSocket 연결은 처음에는 HTTP 프로토콜로 시작된다. 클라이언트는 서버에 Upgrade 헤더가 포함된 HTTP 요청을 보내며 WebSocket으로의 전환을 요청한다. 서버가 이를 수락하면 "101 Switching Protocols" 응답을 보내고, 이후부터는 WebSocket 프로토콜로 전환된다.예시 요청 헤더:GET /socket HTTP/1.1Host: example..

CS/네트워크 2025.04.22

탐색 알고리즘

탐색 알고리즘은 말 그대로 어떤 데이터 구조에서 원하는 값이 있는지 찾아내는 알고리즘이다. 선형 탐색 알고리즘가장 간단한 탐색 방법은 선형 탐색이 있다.선형 탐색은 데이터 구조를 처음부터 끝까지 하나씩 살펴보는 것을 말한다.배열이나 리스트같은 선형 데이터 구조에서 사용할 수 있다. 예를 들어 다음과 같은 배열이 있다고 하자.arr = [2, 12, 15, 11, 7, 19, 45] 이 배열에서 7이라는 값을 찾으려고 한다.선형 탐색 알고리즘을 사용하면 배열의 0번 인덱스부터 시작해서 배열의 요소를 하나씩 살펴본다.위 배열을 0번 인덱스부터 살펴보면 2, 12, 15, 11, 7. 다섯번째 요소에서 원하는 값 7을 찾을 수 있다. 이번에는 배열에서 9라는 값을 찾으려고 해보자.9라는 값은 배열에 없기 때문..

CS/알고리즘 2025.04.14

Stack, Queue

스택 스택은 LIFO(Last In First Out) 원칙을 따르는 선형 데이터 구조이다. 스택이라는 이름 그대로 어떤 데이터가 쌓인 구조를 생각하면 좋다.LIFO(후입선출) LIFO는 Last In First Out의 줄임말로, 데이터의 삽입과 삭제 작업의 순서에 대한 원칙이다. 이는 즉 데이터를 스택에서 제거할 때, 스택에 삽입한 순서의 반대 순서를 따른다는 뜻이다. 스택의 기본 동작 스택을 다룰 때에는 몇가지 기본 동작을 숙지해야한다.push: 스택에 데이터를 삽입하는 동작이다. 스택의 맨 위에 데이터를 삽입한다.pop: 스택에서 데이터를 제거하는 동작이다. 스택의 맨 위의 데이터를 제거한다.peek: 스택에서 데이터를 조회하는 동작이다. 스택의 맨 위의 데이터를 조회한다. 그 외에 isEmpty..

CS/알고리즘 2025.02.26

Array, Linked List

배열(Array)Array는 우리 말로 배열이라고 한다. 배열은 모든 요소를 순서대로 나열한 선형 데이터 구조이다. 배열은 모든 데이터를 메모리의 연속된 위치에 저장한다. 대체로 동일한 데이터 타입의 데이터만을 저장한다.  배열의 가장 큰 특징은, 배열의 첫 번째 요소의 메모리 위치를 안다면 나머지 요소의 위치를 상대적으로 알 수 있다는 것이다. 예를 들어, 어떤 배열의 시작 위치가 0x0010이고 4바이트의 정수형 데이터를 저장하고 있다면 이 배열의 3번째 요소는 0x0010 + 2 * 0x0004 = 0x0018에 있을 것이다.배열의 인덱스 배열에서 어떤 데이터가 있는 위치를 인덱스라고 한다. 인덱스는 0부터 시작한다. 즉, 배열의 첫번째 데이터의 인덱스는 0이다. 위의 예시에서 배열의 세번째 데이터..

CS/알고리즘 2025.02.26