운영체제(OS)/공룡책

    [운영체제] Mach 메세지 전달

    [운영체제] Mach 메세지 전달

    Mach에서 대부분의 통신 메일박스(포트)로 메세지를 주고 받으면서 수행된다. 각 포트에는 그 포트와 상호 작용하는데 필요한 자격을 식별하는 포트 권한이 필요하다. 1 ) MACH_PORT_RIGHT_RECEIVE 2 ) MACH_PORT_RIGHT_SEND 태스크가 생성이 되면 Task self 포트와 Notify 포트라는 두 개의 포트가 생성된다. 이 두 가지 포트는 커널과 송수신 권한을 가지고 있기 때문에, 태스크는 커널을 통해 메세지를 보낼 수 있고, 커널은 이벤트 발생 알림 작업을 태스크로 보낼 수 있다. mach_port_allocate() 함수는 새 포트를 작성하고 메세지 큐를 위한 공간을 할당한다. mach_port_t port; mach_port_allocate( mach_task_sel..

    [운영체제] POSIX 공유 메모리

    [IPC 시스템의 사례] 1 ) POSIX 공유 메모리 : 메모리-사상 파일을 사용하여 구현됨. shm_open()을 이용하여 공유 메모리 객체 생성 fd = shm_open(name, O_CREAT | O_RDWR, 0666) ftruncate()을 이용하여 객체의 크기를 바이트 단위로 설정 ftruncate(fd, 4096) mmap()을 이용하여 공유 메모리 객체를 포함하는 메모리-사상 파일을 구축한다. mmap(0, SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0) sprintf() 공유 메모리 객체에 쓰기 작업을 한다. sprintf(ptr, "%s", message_0) shm_unlink() 함수를 호출하여 접근이 끝난 공유 메모리를 제거한다. shum_..

    [운영체제] 프로세스의 생성과 종료

    시스템 내의 프로세스들은 반드시 동적으로 생성되고, 제거되어야 한다. 따라서 운영체제는 프로세스 생성 및 종료를 위한 기법을 제공해야 한다. 그래서 이번에는 프로세스를 생성하고 제거하는 방법에 대해서 알아보고자 한다. [프로세스 생성] 실행되는 동안 프로세스는 여러 개의 새로운 새로운 프로세스들을 생성할 수 있다. 생성하는 프로세스를 부모 프로세스, 새로운 프로세스는 자식 프로세스라고 하는데 이런 구조가 반복되면서 트리를 형성한다. 현대 운영체제들은 유일한 프로세스 식별자(pid)를 사용하여 프로세스를 구분하고 프로세스의 속성에 접근한다. 일반적으로 프로세스가 자식 프로세스를 생성할 때, 자식 프로세스는 자신의 역할을 수행하기 위해 특정 자원(CPU 시간, 메모리)등이 필요하다. 이런 자원을 얻기 위한 ..