본문 바로가기

개발일지

[OS개발] 10. 64비트 모드로 전환하자 지금 다 책대로 했는데 아래 오류가 남 디스크 이미지를 못불러 온다는데, 위에 bin 파일까지 모두 정상적으로 빌드는 완료 되었다. imagemaker.c 파일이 문제인 것 같은데.. 근데 신기하게 c 파일을 계속 수정해도 똑같은 에러가 발생한다. 심지어 에러 메시지도 수정했는데 뭔가 makefile은 캐시같은걸 남기나 해서 검색중.. 그게 아니라 이전 챕터에서 내가 utility 파일 하위에 makefile을 만들지 않아서 그랬음.. 빌드할때 꼬였음 이제 빌드는 모두 성공하는데 무한 재부팅이 된다... 비슷한 문제 질문 https://stackoverflow.com/questions/69573387/switch-to-32-bit-protected-mode-causes-qemu-to-restart-in-.. 더보기
[OS개발] 6. C언어로 커널 작성하기 - 작성중 섹션 배치와 크기 정렬을 위해 수정한 링커 스크립트가 있는데, 이 책 자체가 윈도우를 기준으로 설명하고 있어서 맥 사용자인 나와는 좀 다르다. 일단 맥에서는 32비트용 링커 스크립트가 어디에 저장되어있는지 확인해보자. 명령어 오류 gcc -melf_i386 -T elf_i386.x -nostdlib Main.o -o Main.elf 위 명령어가 오류가 난다. 확인중 오류 메시지: unknown argument: '-melf_i386' gcc -m32 -T elf_i386.x -nostdlib Main.o -o Main.elf 이 명령어로 대체할 수 있다. 책에서는 똑같은 설명인데 옵션을 앞에서는 -m32로 주고 뒤에서는 -melf_i386으로 주었다. 그다음오류 ld: unknown option: -T .. 더보기
[OS개발] 5. 32비트 보호 모드로 전환 - 정리중 책에 나온 내용 그대로 따라함. 추후 정리 필요 더보기
[OS개발] 4.플로피 디스크에서 OS 이미지 로딩 예제 따라하다가 Disk Error가 나서 구글링 하다가 아래 글을 찾았다. http://jsandroidapp.cafe24.com/xe/development/12035 Development - [수정 건의] 5장 - qemu 버전과 Floppy Disk 변경 관련 안녕하세요, 개발자 kkamagui님의 『64비트 멀티코어 OS 원리와 구조』 책으로 OS 공부를 하고 있는 개발자 입니다.다름이 아니라, 5장 - "플로피 디스크에서 OS 이미지를 로딩하자" 내용 중 BootLoader.as jsandroidapp.cafe24.com 위 글쓴이가 말한대로 QEMU의 플로피 디스크의 트랙 당 섹터 수가 36개가 되었기에 코드 상의 19 -> 37로 변경했는데도 난 반영이 안된다. 뭐가 문제지 책으로는 154p.. 더보기
[OS개발] 3. 부트로더 만들기 이제부터 실습 내용이기에 책 내용을 여기 전체에 쓰는 것 보다 막힌 것 위주로 풀어보려고 한다. 1. 책 명령어 대로 했는데 실행 화면이 안뜸 - 다른 화면에서 띄워져 있었음. IDE가 전체화면이라 다른 곳에서 띄워져있는 것을 못봤음 책 자체가 11년 전 책인데도 지금 보면서 따라하기에 무리가 전혀 없다. 로우 영역이라 그런가.. 부트로더 띄우는 것까지 막히는 것 없이 통과했다. 더보기
[OS개발] 2. 64비트 프로세서 OS를 개발하는 과정에서 큰 비중을 차지하는 레지스터는 범용 레지스터, 세그먼트 레지스터, 컨트롤 레지스터 3가지. 레지스터 정리 범용 레지스터 - 계산, 메모리 어드레스 지정, 임시 저장 공간 등의 목적으로 사용. - 16, 32비트 모드를 지원하는 x86계열은 8개, x86-64는 16개이다. x86-64에는 R8~R15로 이름 붙여진 8개의 레지스터가 더 있다. 특수한 용도가 정의되지 않음. - 범용 레지스터가 늘어나면 수행 속도가 개선된다. 범용 레지스터 이름 용도 AX 산순 연산 수행 시 누산기 BX 데이터의 어드레스를 지정할 때 데이터 포인터로 사용 CX 루프 또는 문자열의 카운터로 사용 DX I/O 어드레스를 지정할 때 사용. 산술 연산 시 보조 레지스터로 사용 SI 문자열에 관련된 작업 수.. 더보기
[OS개발] 1. 프롤로그 64비트 멀티코어 OS 원리와 구조 따라하기라는 책을 보고 OS를 만들어 보기로 했다. 내 블로그 보는 분들은 알겠지만 항상 뭐 시작하다가 나중에 흐지부지되고 이런것이 많아서.. 이런게 얼마나 갈지는 모르지만 시작해본다. 1. gcc 파일 생성 테스트 - 성공. 잘 컴파일 된다 2. NASM 설치 - https://www.nasm.us/ NASM Latest version Stable 2.15.05 History Builds List Snapshots Latest, List For users of RPM-based Linux distributions (e.g. Fedora, Red Hat, SUSE, ...), you can download the official NASM builds using dnf .. 더보기
[CANVAS - 체스] 9. 체스말 이동 가능조건 추가 - 현재 체스말은 모든 말이 모든곳으로 이동할 수 있다. 이 부분을 실제 체스 게임처럼 구현하려고 한다. https://ko.wikipedia.org/wiki/%EC%B2%B4%EC%8A%A4_%EA%B7%9C%EC%B9%99 체스 규칙 - 위키백과, 우리 모두의 백과사전 여섯개의 체스 기물의 모습. 왼쪽부터 킹, 룩, 퀸, 폰, 나이트, 비숍이다. 체스 규칙이란 보드게임 체스를 두고 진행하는데 필요한 규칙들이다. 체스의 기원에 대해서는 논란이 있지만, 현대 체스 ko.wikipedia.org 이것 이후에 1턴씩 돌아가면서 둔다는 규칙만 추가하면 기본적인 게임의 기능은 추가가 된 셈이고, 현재 내가 띄운 서버에 올려둘 예정이다. 1. 갈 수 있는 곳을 특별한 색으로 표시해보자. - 지금은 모든곳을 갈 수.. 더보기
[사이드프로젝트] 자동 배포 github main 브랜치에 머지하면 자동으로 배포하도록 하고싶음. 현재는 머지 되면 내가 직접 ec2 들어가서 git pull 받는 상황. https://ms3864.tistory.com/383?category=1003779 github action으로 ec2에 자동배포하기3 https://ms3864.tistory.com/381 github action으로 ec2에 자동배포하기1 우아한테크캠프 마지막 프로젝트 때 나는 자동배포부분을 맡지 않아서 꼭 혼자서 다시 해보고 싶었다. 그리고 삽집도 많이했는데 다 ms3864.tistory.com 이게 설명이 잘 되있고 회사 코드 보면서 공부좀 해야겠다. ec2 사용하는 사람은 codeDeploy 따로 비용이 안나간다고 하길래 codeDeploy 사용하려고 .. 더보기
[CANVAS - 체스] 8. 리팩토링 중 1. 체스판의 각 square와 piece를 나타내는 데이터 형태를 만들면서 하다보니 손가는대로 구현했었는데, 이 부분을 다시 수정했다. 일단 1차 리팩토링은 여기까지만 하고 체스말이 가는 위치 기능을 추가해야겠다. 이번에 작업하면서 여실히 느꼈는데 요즘은 대부분 회사 프로젝트가 ts로 되어있어서 크게 못느꼈는데 다음부터는 무조건 ts로 작업을 시작해야겠다. 작은것 하나씩 불쑥불쑥 불편한게 많다.. 더보기