HOME TIP & TECH

TIP & TECH

TIP & TECH 상세
Mach 와 host port 에 대해.

onionmixer 2018-01-28 15:24:50 3619

일반적으로 host port 라고 하면 TCP/IP network 에서 말하는 network port 로 흔히 생각할 수 있겠습니다만.. 이게 kernel 에서 사용하는 용어가 되면 의미는 좀 달라집니다. 일단 wikipedia 의 설명을 잠시 참고해볼까요?

https://en.wikipedia.org/wiki/Mach_(kernel)

Wikipedia 문서에서는 mach 를 설명하며 다음의 4가지를 설명하고 있습니다.

* "task" 는 "thread" 를 실행할 수 있게 하는 일련의 시스템 자원으로 구성된 객체(object).
* "thread" 는 실행의 단일 단위이며, task 컨텍스트(context of task) 내에 존재하며 작업의 자원을 공유.
* "port" 는 작업 간 통신을 위한 보호 된 메시지 대기열. 작업은 각 포트에 권한을 보내고 권한을 받는다.
* "messages" 는 유형이 지정된 데이터 객체의 모음이며 포트 또는 특정 작업 또는 스레드가 아닌 포트에만 보낼 수 있음.

뭔가 되게 복잡해 보입니다만.. 사실 그리 복잡하지도 않습니다. 저걸 다시 풀어서 정리해 보자면 이런거죠.

1. task 는 안쪽에 thread 라는 실행되고있는 무언가를 가지며 task 마다 port 라는 통신선로를 가지고 있다.
2. 각 task 는 직접 메시지를 주고 받을 수 없으며 메시지의 대상은 기본적으로 task 안에 들어있는 thread 가 된다.
3. thread 는 task 에 정의된 port 를 통해 메시지를 주고받는다
4. 이런 통신방식에 있어 user level 에서는 kernel level 의 thread 로 바로 메시지를 보낼 수는 없다. 그래서
5. kernel thread 끼리의 통신을 위한 task 의 port 정보를 요청하고 메시지를 보내는 kernel function 이 별도로 필요하다.


뭐 이정도의 얘기인겁니다. 뭔가 되게 복잡해 보이지만 사실은 NeXTSTEP DriverKit 의 IOHostPrivSelf() 에 대한 내용을 정리하다가 나온거구요, 최신의 Apple Darwin 에서 사용하는 kernel 인 XNU 에도 그 개념은 명확하게 이어지고 있습니다.(mach kernel 의 특성이니만큼.. 어쩔 수 없겠네요)

https://robert.sesek.com/2014/1/changes_to_xnu_mac...

그 외에 추가로 참고할만한 자료라면 다음의 정보를 보는게 좋을듯 합니다. 적어도 이 port 와 message 라는 개념은 mach 만이 아니라, mach 개념을 채택한 GNU hurd 에도 이어지고 있거든요.

https://www.gnu.org/software/hurd/gnumach-doc/Proc... - host_processor_set_priv()
http://www.shakthimaan.com/downloads/hurd/kernel_p... - 64page "HOSTS"
https://www.gnu.org/software/hurd/gnumach-doc/Host...

댓글 0개

이전글/다음글 목록
이전 telnet 기반의 BBS host 에 대한 정보
다음 gnome 환경과 zsh 정보들