macOS 의 구조


[출처: https://en.wikipedia.org/wiki/Architecture_of_macOS]

Diagram of Mac OS X architecture


[Core OS : Darwin]

 - Unix(BSD) 계열 OS

 - XNU kernel 사용

   : hybrid kernel. (BSD + Mach)


Darwin 은 Unix(BSD) 계열 OS 로 커널은 xnu 를 사용하고 있음

XNU kernel + system utilities = Darwin


Linux 와 비교해 보면, Darwin 과 같은 Level 은 리눅스


리눅스를 기반으로 한 배포판인 ubuntu, fedora 플랫폼이 macOS


Darwin 과 XNU kernel 은 open source 로

Darwin 을 이용하여 macOS 와 다른 배포판을 만들수 있음 ( ubuntu, fedora, centos 등 여러가지 platform 이 있는 것 처럼)

하지만 Darwin 은 Unix(BSD) 계열 OS 로 driver 개발등 어려운 점이 있음


(https://www.quora.com/Whats-the-difference-between-Mac-OS-X-Darwin-OS-and-a-popular-Linux-distribution-like-Ubuntu-What-can-be-done-on-Darwin)


XNU kernel source code : https://opensource.apple.com/source/xnu/



Core OS 위에

Core Services, Media, Cocoa Application 으로 구성.

User Application 은 Cocoa Framework 를 사용하여 개발 가능.


macOS 에서 사용하는 GUI 는 Aqua. ( https://en.wikipedia.org/wiki/Aqua_(user_interface) )

MacOS Architecture v2







[만들면서 배우는 OS 커널의 구조와 원리] - 한빛미디어社, 김범준 저

이 책의 소스를 이용하여 실습해 보면 된다.

하지만 이 책에서는 플로피 디스크로 실습해보는 방법이 나와있다.

매번 소스코드를 만들고 재부팅하려면 무지 귀찮기 때문에 VMware 라는 가상머신을 이용해보기로 했다.

그리고 플로피디스크가 없는 관계로 USB 외장메모리를 이용하기로 했다.

근데 VMware 가 USB 메모리를 하드디스크로 인식하지 못한다.

그래서 검색한 결과


http://ucandream.tistory.com/entry/VMware-USB-Booting-VMware%EC%97%90%EC%84%9C-USB%EB%A1%9C-%EB%B6%80%ED%8C%85%ED%95%98%EA%B8%B0

여기에 아주 자세히 설명이 되어 있었다.

여기서는 파티션을 나눠라고 나와 있는데 그렇게 하지 않아도 되고 데이터의 손실도 거의 없는 방법이 있다.

Hitachi Disk Driver 이걸로 이동디스크를 로컬디스크로 만든다.

그리고 USB 디스크의 0 sector 에 부트스트랩코드를 올리면 된다.

그전에 0 sector 를 백업해 놓으면 다시 안에 들어있던 데이터를 복구할수 있다.

0 sector 의 백업과 저장하는 프로그램을 직접 만들어 보았다.


드라이버를 선택해 select 를 누르면 0 번째 sector 가 출력이 된다.
이것을 backup 버튼을 누르면 .bin 파일로 저장할수 있다.

밑에 원하는 코드를 열면 밑에 코드가 출력이 되고, write 를 누르면 해당디스크에 내용이 써진다.

오류도 많고 버그도 많으니 알아서 사용하길... 별 추천은 하지 않는다.

혹시 하드디스크 섹터를 날려 먹을수 있으므로...

vc++6.0 이 없으면 dll 에러가 날수 있는데 mfc42.dll 을 다운받은뒤 실행파일과 같은 곳에 넣으면 된다.

dll 파일은 알아서 구하시길..

+ Recent posts