OS(7)
-
[1000줄 OS 구현하기] 예외
예외 (Exception) | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. 예외 운영체제(OS)에서 예외(Exception)는 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류를 의미한다. 이는 하드웨어나 소프트웨어에서 발생할 수 있으며, 정상적인 프로그램의 흐름을 방해하는 사건입니다. 예외는 크게 다음과 같은 상황에서 발생할 수 있다:하드웨어 인터럽트: 외부 장치로부터의 신호나 이벤트소프트웨어 인터럽트: 시스템 콜과 같은 프로그램의 의도적인 요청프로그램 오류: 0으로 나누기, 잘못된 메모리 접근, 페이지 폴트 등 운영체제는 이러한 예외 상황이 발생했을 때 적절한 예외 처리 루틴을 실행하여 시스템의 안정성을 유지해야 한다. 프로세스..
00:27:20 -
[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 구현하기] Boot
Boot | OS in 1,000 Lines operating-system-in-1000-lines.vercel.app 1. Booting 보통 컴퓨터를 부팅하면 BIOS나 UEFI가 하드웨어를 초기화하고 OS를 로드한다. QEME virt machine에서는 OpenSBI가 BIOS나 UEFI 역할을 수행한다. 종류long form설명특징BIOSBasic Input/Output System컴퓨터 부팅 시 가장 먼저 실행되는 펌웨어하드웨어 초기화, 운영체제 로드, 오래된 PC에서 주로 사용UEFIUnified Extensible Firmware InterfaceBIOS를 대체하는 현대적인 펌웨어 인터페이스빠른 부팅 속도, 더 많은 기능 제공, 현대 PC에서 주로 사용OpenSBIOpen Supervis..
2025.01.21 -
2022-06-30 리눅스_권한_그룹_소유권
https://opentutorials.org/course/2598/14290 권한 (permission) - 생활코딩 수업소개 여기서는 여러 사용자들이 적절한 권한에 따라서 파일과 디렉토리를 사용할 수 있도록 하는 방법인 권한에 대해서 알아봅니다. 수업 강의 1 강의 2 - 권한을 변경하는 방법(chmod) 강 opentutorials.org 이 글은 목소리가 감미로우신 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다. 권한 (Permission) 유저가 파일과 디렉터리에 대해서 읽기, 쓰기, 실행을 할 수 있는지 없는지 설정. 가장 앞 -는 파일이라는 의미다. (d는 디렉터리) rwx : read, write, excute (읽기, 쓰기, 실행 권한) (-는 해당 권한이 없음을 표시) 잠..
2022.06.30 -
2022-06-29 다중사용자, 슈퍼유저
이 글은 목소리가 감미로우신 이고잉님의 오픈튜토리얼 리눅스 강의를 듣고 정리한 내용입니다. 다중 사용자 유닉스 계열 운영체제는 여러 명이 함께 사용할 수 있다. 장점도 있는 강력한 기능이지만 다중 사용자를 지원하면서 시스템의 복잡도가 올라갔다. 이 복잡성과 그곳에서 파생된 위험성을 이해하고, 원활하게 사용하기 위해서 권한에 대해서 이해해보자. id 사용자가 사용 중인 id에 대한 정보를 출력한다. who 현재 접속 중인 사용자 목록을 출력한다. 슈퍼 유저 sudo [command] 일시적으로 슈퍼 유저의 권한으로 뒤따르는 명령어를 실행. 슈퍼유저가 되면 시스템에 위험한 명령어도 사용할 수 있게 된다. su switch user 로그아웃 없이 임시로 다른 사용자의 UID, GID 환경을 사용하는 명령어. ..
2022.06.29