빌드 안내
앞으로 부트로더에 대한 설명을 이어갈 것인데, 사실 부트로더에 대한 설명을 쓰다가 빌드 툴에 대한 안내가 있어야할 것 같아서 먼저 작성해 둔다. 코드 빌드 법 참고 문헌에 명시된 “64Bit 멀티코어 OS의 구조”책에서는 nasm과 cygwin을 사용한다. 윈도우 개발자를 배려한 것인데 사실 cygwin 설정법이 무지막지하게 귀찮다. 그래서 나는 ...
앞으로 부트로더에 대한 설명을 이어갈 것인데, 사실 부트로더에 대한 설명을 쓰다가 빌드 툴에 대한 안내가 있어야할 것 같아서 먼저 작성해 둔다. 코드 빌드 법 참고 문헌에 명시된 “64Bit 멀티코어 OS의 구조”책에서는 nasm과 cygwin을 사용한다. 윈도우 개발자를 배려한 것인데 사실 cygwin 설정법이 무지막지하게 귀찮다. 그래서 나는 ...
레지스터 - 2 실수 계산용 레지스터 범용 레지스터는 일반적으로 정수 계산이나 주소계산을 위해 사용되기에 실수계산은 메모리의 스택을 이용하거나 아래의 레지스터를 사용한다. 1. FPU 레지스터 R0 ~ R7라는 이름의 부동 소수점 데이터 레지스터가 있다(각각 80bit) 컨트롤 레지스터, 상태 레지스터, 태그 레지스터가 있다(각각 16bi...
레지스터 - 1 사실 CPU를 설명할 때 설명해야 하는데 너무 분량이 많아질 것 같아서 별도의 페이지로 분리했다. 레지스터라는 것은 크게 두 가지 종류로 나눌 수 있다. 프로그램 실행을 위한 레지스터와 계산을 할 때 쓰는 레지스터와 모드나 설정을 바꾸는 등 시스템에 관련된 레지스터가 그것이다. 프로그램 실행을 위한 레지스터 프로그램 실행을 위한 레...
KEYBOARD 가장 일반적인 입력 기기이다. 예전에는 SERIAL 단자나 PS/2 방식의 포트를 사용했지만 최근에는 USB방식으로 거의 대부분 바뀌었다. 키보드는 종류가 여러개다. 가장 일반적이고 싼 멤브레인 키보드부터 비싸고 특유의 소리가 매력적인 기계식 키보드까지 그러한 키보드의 종류를 열거하자면 한도 끝도 없겠지만 주요 구조는 결국에 두 개...
SSD 기계적인 장치로 데이터를 읽고 쓰게 만들어진게 HDD라면 SSD는 전기적인 장치로 데이터를 읽고 쓰게 만들어졌다. SSD의 구조는 아래와 같다. 출처 : https://codecapsule.com/wp-content/uploads/2014/02/ssd-architecture.jpg 사용자의 요청이 Host Interface를 통해서 들...
HDD는 Hard Disk Drive의 약자이고 SSD는 Solid State Drive의 약자이다. 최근에는 개인용 PC의 경우 SSD를 많이 쓰고, 좀 더 진보된 형태인 M.2도 많이 쓰지만 HDD 역시 삭제시 데이터 복구의 용이성이나 저렴한 가격으로 인해 별도의 수요가 있다. 때문에 둘 다 보조 기억장치로 쓰이며 각각의 구조는 아래와 같다. H...
컴퓨터 OS를 이야기하기에 앞서서 주요 하드웨어에 대해서 알아볼까 한다. 사실 컴퓨터의 하드웨어에 대해서 깊게 이야기하면 진짜 한도 끝도 없는게 이쪽이라 OS를 다루는 부분에서 필요한 부분을 중점적으로 다룰까 한다. CPU 일반적으로 머리 역할을 하는 칩이다. 레지스터와 연산장치, 제어장치 이렇게 세 개를 하나로 묶어서 하나의 코어로 멀티코어 CP...
일단 CLI를 지원하는 멀티코어 OS 개발을 위한 목차는 아래와 같다. 하드웨어에 대한 구조 16,32,64bit 모드 페이징과 세그멘테이션 부트로더 32bit 커널 64bit 커널 동시성 제어 멀티 코어 Shell 이건 책에서 나온 OS 개발 순서를 조금 변경하여 따른 형태지만 내부에 대한 설명은 책의 설명과 ...
약 6개월 전부터 공부하던 OS에 대해 포스팅을 시작하고자 한다. 세부 내용은 아래와 같다. 목적 OS가 어떤 기능을 하고 어떤식으로 구현되는지 안다. 목적 수단 X86을 기반으로 한 어셈블리어 및 C언어를 통해 OS를 만든다. 어떤 생각으로 개발 중이며 연구 결과에 대한 내용은 개인적인 git repo에 올릴 생각인데, 차후 정리가 되면 pub...
웹과 소켓 통신 브라우저를 이용해서 웹을 탐색하고 있을 때 아무것도 안 했는데 웹 페이지가 최신화 되거나 알림이 왔다고 표기된 적이 있는가? 이런 경우 클라이언트에서 특정 시간마다 업데이트 된 내역이 있는지 확인하는 Interval을 사용하는 경우도 있지만 좀 더 즉각적인 반응이 필요한 경우에 소켓 통신을 사용하곤 한다. 소켓 통신이라고 하면 C...