[1000줄 OS 구현하기] C 표준 라이브러리

Featured image for [1000줄 OS 구현하기] C 표준 라이브러리

C 표준 라이브러리 | OS in 1,000 Lines 1. C 표준 라이브러리 기본 타입과 메모리 조작, 문자열 조작 함수를 직접 구현해 본다. 가. 기본 타입들 예를 들어 align_up(0x1234, 0x1000)은 0x2000이 되고, is_aligned(0x2000, 0x1000)은 true를 반환하지만 is_aligned(0x2f00, 0x1000)은 false를 반환한다고 한다. 메모리 정렬(alignment)은 시스템의 성능과 안정성을 위해 필요하다. 순수 C 코드로 구현할 수도 있지만 교제에서는 Clang의 … 더 읽기

[1000줄 OS 구현하기] Hello World!

Featured image for [1000줄 OS 구현하기] Hello World!

Hello World! | OS in 1,000 Lines 1. SBI로 출력 SBI를 OS의 API 정도로 소개했었다. SBI의 function을 호출하기 위해선 ecall 명령어를 사용한다. 가. kernel.c 수정되거나 추가한 코드만 살펴보면… SBI 호출 시 Function ID (fid)와 Extension ID (eid)는 SBI 사양에서 미리 정의된 번호들. 이러한 ID들은 RISC-V SBI 표준에 의해 미리 정의되어 있어서 개발자가 임의로 정하는 것이 … 더 읽기

[1000줄 OS 구현하기] Boot

Featured image for [1000줄 OS 구현하기] Boot

Booting the Kernel | OS in 1,000 Lines 1. Booting 보통 컴퓨터를 부팅하면 BIOS나 UEFI가 하드웨어를 초기화하고 OS를 로드한다. QEME virt machine에서는 OpenSBI가 BIOS나 UEFI 역할을 수행한다. 종류 long form 설명 특징 BIOS Basic Input/Output System 컴퓨터 부팅 시 가장 먼저 실행되는 펌웨어 하드웨어 초기화, 운영체제 로드, 오래된 PC에서 주로 사용 UEFI Unified Extensible Firmware … 더 읽기

[1000줄 OS 구현하기] RISC-V Assembly

Featured image for [1000줄 OS 구현하기] RISC-V Assembly

RISC-V 101 | OS in 1,000 Lines 1. RISC-V RISC-V는 (”리스크 파이브”로 발음한다.) 축소 명령어 집합 컴퓨터 즉, RISC(Reduced Instruction Set Computer) 기반의 개발형 명령어 집합(ISA)이다. 대부분의 ISA와 달리 RISC-V ISA는 일부 목적으로는 자유로이 사용할 수 있으며, 누구든지 RISC-V 칩과 소프트웨어를 설계, 제조, 판매할 수 있게 허가되어 있다. 저자는 RISC-V를 CPU로 선택한 이유가 명세가 간단하고 … 더 읽기

[1000줄 OS 구현하기] 시작하기

Featured image for [1000줄 OS 구현하기] 시작하기

1. 출처 Operating System in 1,000 Lines | OS in 1,000 Lines 1000줄로 운영체제를 직접 구현할 수 있다고 한다. 운영체제를 공부할 겸 한번 만들어 보자. 실제로 Linux의 0.01 version이 8413 줄에 불과했다고 하니 충분히 가능할 것 같다. 글에 따르면 완성된 OS에선 기본적인 context switching, paging, user mode, a command shell, disk device driver, file read/write … 더 읽기

[컴퓨터구조론] 입출력 구조

Featured image for [컴퓨터구조론] 입출력 구조

위 유튜브 강의를 정리, 보충한 내용입니다. 본격적으로 들어가기 앞서 I/O와 Memory에 대하여 알아보자. 비동기 데이터 전송 (Asynchronous Transfer) 실제 하드웨어 수준에서 1bit 데이터를 전달하는 방법에 대하여 알아보자.   동기식 버스 비동기식 버스 정의 시스템 버스에서 모든 버스 동작들이 발생하는 시간이 공통의 클록을 기준으로 결정됨. 시스템 버스에서 버스 동작들의 발생 시간이 다른 버스 동작의 발생 여부에 … 더 읽기

[컴퓨터구조론] 백터 처리

Featured image for [컴퓨터구조론] 백터 처리

위 유튜브 강의를 보고서 정리한 내용입니다. 백터 처리 (Vector Processing) 왜 씀? : 대량의 데이터를 동시에 처리하여 계산 속도를 향상하는 것.: 일련의 데이터에 대한 연산을 한번에 수행할 수 있게 합니다.: 과학, 공학, 그래픽, 기상 예보, 의료 이미징 등과 같은 분야에서 많은 양의 데이터를 빠르게 처리해야 하는 상황에 특히 유용.: 장기 기상 예보, 석유 탐사, 지진 … 더 읽기

[Java] 문자열 패턴 매칭

Featured image for [Java] 문자열 패턴 매칭

1. 문자열 패턴 매칭 문자열 패턴 매칭은 주어진 문자열에서 특정 패턴이 어디에 위치하는지 찾는 알고리즘. 예를 들어, “나는 전선을 간다”라는 문자열에서 “전선”라는 패턴을 찾는 경우가 문자열 패턴 매칭의 한 예다. 검색 엔진, 텍스트 편집기, 데이터베이스 등에서 이용된다. 여러 가지 알고리즘들이 있으며, 각각의 알고리즘은 다른 상황에서 장점을 가짐. 문자열 패턴 매칭 알고리즘 설명 장점 단점 Brute … 더 읽기

[Java] 플로이드 워샬

Featured image for [Java] 플로이드 워샬

1. 플로이드 워샬이란? Dijkstra와 달리 2. 구현 DP로 접근하기 위해 부분 문제를 정의해야 한다. n개의 노드를 가진 그래프에서 플로이드 워샬 알고리즘을 통해 각 노드 간의 최단 거리를 구하는 예시 코드다. INF는 무한을 의미하는 값으로 설정하였고, graph는 그래프를 나타내는 2차원 배열입니다. 플로이드-워샬에서 핵심 아이디어는 경유지를 하나씩 추가해 가며 비용을 최적화하는 것이다. 마지막 경유지를 추가하는 시점에서는 모든 … 더 읽기