운영체제(15)
-
[1000줄 OS 구현하기] 커널 패닉
커널 패닉 (Kernel Panic) | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 커널 패닉 커널 패닉은 운영체제의 커널에서 복구할 수 없는 치명적인 오류가 발생했을 때 시스템이 안전하게 작동할 수 없다고 판단하여 즉시 작동을 중지하는 상태를 말합니다. 블루스크린과 같다고 생각하면 된다. 이번 챕터에서는 크리티컬 한 오류가 발생하면 커널이 동작을 멈추도록 구현해 보았다. kernel.h#define PANIC(fmt, ...) \ do { ..
2025.02.03 -
[1000줄 OS 구현하기] C 표준 라이브러리
C 표준 라이브러리 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. C 표준 라이브러리 기본 타입과 메모리 조작, 문자열 조작 함수를 직접 구현해 본다. 가. 기본 타입들 common.htypedef int bool;typedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned int uint32_t;typedef unsigned long long uint64_t;typedef uint32_t size_t;typedef uint32_t paddr_t;typedef uint32_t vaddr_t;#define true 1#define false 0#define..
2025.02.03 -
[1000줄 OS 구현하기] Hello World!
Hello World! | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app한글 번역이 생겼습니다! 1. SBI로 출력 SBI를 OS의 API 정도로 소개했었다. SBI의 function을 호출하기 위해선 ecall 명령어를 사용한다. 가. kernel.c#include "kernel.h"typedef unsigned char uint8_t;typedef unsigned int uint32_t;typedef uint32_t size_t;extern char __bss[], __bss_end[], __stack_top[];void *memset(void *buf, char c, size_t n) { uint8_t *p = (uint8_t..
2025.02.03 -
[1000줄 OS 구현하기] RISC-V Assembly
RISC-V 101 | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. RISC-V RISC-V는 (”리스크 파이브"로 발음한다.) 축소 명령어 집합 컴퓨터 즉, RISC(Reduced Instruction Set Computer) 기반의 개발형 명령어 집합(ISA)이다. 대부분의 ISA와 달리 RISC-V ISA는 일부 목적으로는 자유로이 사용할 수 있으며, 누구든지 RISC-V 칩과 소프트웨어를 설계, 제조, 판매할 수 있게 허가되어 있다. 저자는 RISC-V를 CPU로 선택한 이유가 명세가 간단하고 초보자에게 적합하며, x86과 Arm과 함께 최근 주목받는 ISA이기 때문이라 한다. RISC-V Ratified Specificatio..
2025.01.17 -
[1000줄 OS 구현하기] 시작하기
1. 출처 Intro | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1000줄로 운영체제를 직접 구현할 수 있다고 한다. 운영체제를 공부할 겸 한번 만들어 보자. 실제로 Linux의 0.01 version이 8413 줄에 불과했다고 하니 충분히 가능할 것 같다. 글에 따르면 완성된 OS에선 기본적인 context switching, paging, user mode, a command shell, disk device driver, file read/write operations in C 등을 할 수 있다고 한다. 이 과정에서 가장 어려운 부분은 ‘디버깅’이라고 한다. 구현되지 않은 printf 없이 디버깅하는 방법을 배워야 한다. 충분히 ..
2025.01.17 -
2022-07-13 ssh_key
로그인 없이 로그인 하기 (ssh key) - 생활코딩 수업소개 ssh, rsync, git와 같은 기술을 사용할 때 로그인이 번거로우신가요? 보다 안전한 방법으로 인증하고 싶으신가요? 두가지 고민을 한꺼번에 해결하는 방법이 있습니다. ssh 공개키를 이용하 opentutorials.org 이 글은 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다. ssh key 보통 ssh를 통해서 통신할 경우 ip와 passwd를 통해 접속한다. 다만 이 경우 네트워크 상에 비밀번호가 노출될 수 있다. 이에 간편하면서도 안전한 ssh key 방식을 사용한다. ssh key를 사용하기 위해서 우리가 해야 할 것들 1. client가 public key와 private key를 생성한다. ssh-keygen ..
2022.07.13 -
2022-07-12 rsync
인터넷을 통한 서버간 동기화 (rsync) - 생활코딩 수업소개 여기서는 인터넷을 통해서 컴퓨터와 컴퓨터의 파일을 동기화하는 방법인 rsync 대해서 알아봅니다. 수업 강의 1 강의 2 opentutorials.org 이 글은 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다. rsync 수업목표 : “여기서는 인터넷을 통해서 컴퓨터와 컴퓨터의 파일을 동기화하는 방법인 rsync 대해서 알아봅니다.” rsync는 컴퓨터 시스템 상에서 파일을 효율적으로 전송하고 동기화하기 위한 유틸리티의 하나로, 파일의 타임스탬프와 크기를 검사함으로써 이루어진다. rsync 명령어는 서버 간에 동기화나 백업을 진행할 때 유용하다. 적은 양의 리소스와 빠른 퍼포먼스로 동기화를 구축할 수 있다.(변경된 파일에 대해..
2022.07.12 -
2022-07-12 도메인(Domain)
도메인 (domain) - 생활코딩 수업소개 여기에서는 도메인이 무엇인가를 구체적으로 알아보고, 도메인을 구입해서 사용하는 방법에 대해서도 알아봅니다. 수업 강의 1 - 기본 강의 2 - hosts 파일 강의 3 - 도메인 구입 강의 4 - opentutorials.org 이 글은 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다. Domain 영역, 범위 혹은 소유지라는 의미의 영어단어다. 컴퓨터와 관련된 도메인의 의미는 … 넓은 의미로는 네트워크상에서 컴퓨터를 식별하는 호스트명을 가리킨다. 좁은 의미에서는 도메인 레지스트리에게서 등록된 이름을 의미한다. 이를 통틀어서 ‘웹 주소’라고 (잘못) 부르는 경우도 있다. 출처 : https://ko.wikipedia.org/wiki/도메인_네임 d..
2022.07.12