OS를 만든 소감과 노트를 읽었습니다.

4886 단어 자체 제작 OS
이 글은 자체 OS Advent Calendar 2020 18일째 되는 글이다.
안전 캠핑을 하며 이해를 만드는 OS라는 책을 읽으면서 x86을 위한 OS를 설치해놨기 때문(4개월 이상 전부터 읽고 조금씩 진행되고 있어 처음 사람이 어떻게 생각했는지 기억이 안 난다) 소감과 메모를 남기고 싶었다.
이 책의 구성
이 책의 목록은 여기.이다.
전반전
해설 부분이 되다.바이너리 해설부터 하드웨어 소프트웨어의 기초 지식, 메모리 관리, CPU의 기능과 사용 방법, 각종 주변 장치의 제어 방법 등을 총결산해 특정 기능을 모를 때 쉽게 찾아볼 수 있는 구조를 구성했다.설치 부분은 전체 구성 요소이기 때문에nasm의 사용 방법에 대한 설명도 있습니다.
설치 중인데 "어, 땡땡이 뭐더라?"여러 번 반복해서 봤어요.
아랫부분
실장 부분.운영체제처럼 화려해 보이지는 않지만, OS처럼 멀티태스킹에서 애플리케이션 등을 시작할 수 있다.
실장 부분 곳곳의 필기
실시간 모드에서의 기본 동작
이 일대는 BIOS 호출 사용법을 보면서 하는 느낌일 뿐이다.평상시에는 어셈블리 언어만 읽을 뿐 거의 써 본 적이 없지만 여기서는 저도 모르게 인상을 사로잡았다.
여기서 하는 건 텍스트 출력이니까 OS를 하는 거야~!이런 실감이 안 나요.
보호 모드로 전환~현재 시간 표시
화면 출력의 처리 부분 등 하드웨어에 가까운 부분을 추상화하는 느낌이 좋다.OS를 만드는 느낌이 들어서 재밌어졌어요.
중단, 멀티태스킹, 권한 부여 상태
비상 OS 기능.묘사자라는 단어가 많이 나와 혼란스럽다.개인적으로는 복습이 필요한 곳이다.
소수 연산
평소에는 정수만 생각하고 부동점은 생각해 본 적이 없다.
FPU의 레지스터는 레지스터 창고라고 불리는데 말 그대로 창고 모양이다.레지스터는 80비트로 처음부터 ST(0), ST(1) 순으로 표시되고 마지막에 누른 값은 ST(0)(참조 그림)이다.새로운 값을 추가할 때마다 어떤 값을 신경 써야 하는지 신경 쓰느라 힘들었어요.

공유 호출 코드
붙여넣기를 실시하면 남은 버그로 인한 페이지 오류가 잇따르기 때문에 디버깅에 많은 시간이 걸립니다.원인은 많지만 스티커와 무관한 초근본적인, 메모리 복사의 src와dest가 잘못한 오류도 있는데... 왜 여기를 눈치채지 못했을까???
memcpy.s
memcpy:     ; void memcpy(src, dest, size);
    push ebp
    mov ebp, esp

    push ecx
    push esi
    push edi

    cld     ; clear direction flag

    ; 誤
    ; mov edi, [ebp +  8]  ; src
    ; mov esi, [ebp + 12]  ; dest

    ; 正
    mov esi, [ebp +  8]    ; src
    mov edi, [ebp + 12]    ; dest

    mov ecx, [ebp + 16]    ; size

    rep movsb

    pop edi
    pop esi
    pop ecx

    mov esp, ebp
    pop ebp

    ret
파일 시스템 파일 읽기
파일 시스템이 설치되어 실행되었지만, iso 이미지로 Windows에 설치할 수 없습니다.앞으로의 과제다.
파일 읽기가 "SPECIAL.TXT"만 읽을 수 있어 슬프기 때문에 임의의 이름의 파일을 함수화하여 메모리의 임의의 위치로 읽을 수 있도록 기능이 추가되었다.실행 파일을 읽고 실행하고 싶습니다.
전단 처리
ACPI를 사용하여 전원을 끕니다.평소 사용하던 OS는 무심코 눌렀던 종료 버튼이었으나 실기에서 전원을 끊었을 때 감동했다.
이 책은 각양각색의 과정을 일소하고, 어쨌든 전원을 끊을 뿐이니, 나는 좀 더 상세하게 이해하고 싶다.
완성물

앞으로 도전하고 싶은 거.
  • 실행 파일 읽기 → 실행
  • 파일 쓰기
  • API 구현
  • 마우스 조작
  • 아무튼 소리
  • 다른 언어로 다시 쓰기
  • 전편 의 감상
    함수 중 스택 작업 등 C 언어에서 자동으로 진행되는 부분에 버그가 발생하는 등 많은 부분이 메인 라인과 무관한 부분이다.그러나 현재 CPU가 어떤 명령을 수행하고 있는지, 메모리에 데이터를 어떻게 구성하고 있는지 생각하면서 프로그램을 쓰는 것은 평소 경험할 수 없는 일이다.Windows 등 OS에서 실행되는 프로그램을 만드는 것보다 하드웨어를 직접 제어하는 느낌이 마이크로컴퓨터를 제어하는 것과 같다.
    대부분의 시간이 걸린 디버깅에 관해서는 디버깅의 사용 방법을 잘 파악하지 못하기 때문에 조금만 더 공부하면 개발 효율이 높아진다.
    나는 책을 읽는 과정에서 오자가 매우 많은 것에 매우 신경을 쓴다.특히 후반부에는 반드시 정오표가 있어야 한다.
    안전한 캠핑 소감.
    디버깅을 추진하면 대부분 초보적인 오류인데 "이런 일을 강사라고 불러도 되나..."라며 막혔을 때 질문하지 못했다.이렇게 녹은 지 며칠이 지났으니 가볍게 들을 수 있는 환경이 중요하다고 생각한다.
    당초 타깃은 유저랜드에서 러시아 블록 등 게임을 하는 것이었지만, 주변 사람들에게 자극을 받으면서도 주변 상황을 알 수 있어 정말 즐겁고 좋은 경험이었다.실현 불가능한 부분은 앞으로도 계속 개발할 예정이다.강사, 지도자, 청강자 여러분께 감사드립니다.

    좋은 웹페이지 즐겨찾기