목록2026/02/12 (5)
승코딩당당당
이번 글에서는 디바이스 드라이버의 개념과 구조를 정리하였다.입출력 장치와 버스 구조부터 시작해, I/O 자원 관리 방식(Polling, Interrupt, DMA),Memory-mapped I/O 구조, 그리고 리눅스에서의 디바이스 파일 개념까지 단계적으로 설명하였다. 특히 리눅스 환경에서 디바이스가 파일처럼 관리되는 구조와 Character/Block/Network 디바이스의 차이를 이해하는 것을 목표로 한다. 운영체제와 하드웨어 사이의 연결 고리를 이해하는 데 중요한 기초 개념이다. 입출력 장치(I/O 디바이스)CPU와 정보를 교환하는 장치Digital 신호 또는 non-digital 신호를 포함한다CPU와는 digital 신호를 통해 연결된다 버스 (Bus)버스란?CPU(들), RAM 그리고 개인..
이번 포스팅에서는 리눅스 운영체제에서의 예외처리와 인터럽트 구조, 그리고 커널 내부에서의 인터럽트 처리 방식과 타이머 동작 원리를 정리한다. 예외(Exception)와 인터럽트(Interrupt)의 개념적 차이부터 시작해,인터럽트 벡터, 인터럽트 제어기, 인터럽트 핸들러 구조(Top Half / Bottom Half)까지 단계적으로 살펴본다. 또한 리눅스 커널이 타이머 인터럽트를 통해 수행하는 작업과시스템 콜(System Call)이 사용자 공간과 커널 공간을 연결하는 방식에 대해서도 함께 정리한다. 본 글을 통해 아래 내용을 한 번에 이해하는 것을 목표로 한다.인터럽트 기반 I/O 처리의 흐름커널 내부 처리 구조시스템 콜과 POSIX API의 관계 예외처리와 인터럽트예외처리(Exception)비정상적..
운영체제에서 메모리와 주소(Address)는 프로세스 실행과 자원 관리의 핵심 개념이다. 프로그램은 메모리에 저장되고, CPU는 주소(Address)를 통해 해당 메모리 위치에 접근한다.리눅스에서는 논리 주소, 선형 주소(가상 주소), 물리 주소의 개념을 구분하며,가상 메모리 시스템을 통해 프로세스마다 독립적인 주소 공간을 제공한다. 또한 리눅스는가상 주소 공간(Virtual Address Space)메모리 보호(Memory Protection)메모리 매핑(mmap)Demand PagingCopy On Write(COW)Swapping과 같은 메모리 관리 기법을 통해 제한된 물리 메모리를 효율적으로 사용하도록 설계되어 있다. 본 글에서는 메모리와 주소의 기본 개념부터 리눅스의 가상 메모리 구조, 주소 변..
문제[C++] 백준 14940: 쉬운 최단거리 SILVER 1https://www.acmicpc.net/problem/14940 접근 방법이 문제는 시작점(값이 2인 위치)에서 각 칸까지의 최단 거리를 구하는 문제이다.이동은 상하좌우로 가능하며, 값이 1인 칸만 이동할 수 있고 0은 이동할 수 없다.최단 거리를 구하는 문제이므로 BFS(너비 우선 탐색) 를 사용했다. 핵심 아이디어:시작점(2)의 좌표를 먼저 찾는다.BFS를 이용해 사방 탐색을 진행한다.이동 가능한 칸(값이 1)만 큐에 넣는다.현재 칸의 거리 + 1을 다음 칸의 거리로 저장한다.BFS는 먼저 방문한 경로가 곧 최단 거리이므로 별도의 최단 거리 비교 없이도 정확한 값이 저장된다.결과 배열 ret은 -1로 초기화하여 도달하지 못한 칸을 구분..
문제[C++] 백준 18111: 마인크래프트 SILVER 2https://www.acmicpc.net/problem/18111 접근 방법이 문제는 땅의 모든 칸을 같은 높이 i로 평탄화할 때 걸리는 최소 시간과 그때의 높이를 구하는 문제다. 핵심 아이디어는 다음과 같다.목표 높이 i는 0 ~ 256 전부 후보다.현재 맵에 “i 높이 칸이 0개”라도 그 높이로 평탄화하는 게 최적일 수 있다.각 후보 높이 i에 대해,높이가 더 높은 칸(j > i)은 블록을 제거해야 하고 (1개당 2초)높이가 더 낮은 칸(j 블록을 설치해야 한다 (1개당 1초)제거하면 블록이 인벤토리에 들어오므로, 최종적으로 인벤토리 블록이 음수가 되면 그 높이는 불가능하다.(인벤토리 블록이 음수라는 것은, 갖고 있는 블록보다 오바해서 사..