운영체제

    [운영체제] 운영체제란 무엇인가

    운영체제란 컴퓨터 하드웨어를 관리하는 소프트웨어이다. 응용프로그램을 위한 기반을 제공하며, 하드웨어와 사용자 사이에에서 중재자 역할을 수행한다. 운영체제는 사용자가 웹 브라우저, 문서 편집기 등을 더 편하고, 효율적으로 사용할 수 있게 해준다. 운영체제가 하는 역할을 살펴보기 위해 컴퓨터의 구성부터 알아보자. [컴퓨터 구성] 1 ) 하드 웨어 : 기본 계산 자원을 제공한다 - 중앙 처리 장치(CPU), 메모리 및 입출력(I/O) 장치 2 ) 운영체제 : 하드웨어의 사용을 조절한다. 3 ) 응용 프로그램 : 어떤 시스템 자원을 사용하여 사용자의 문재를 해결할지 결정한다. - 워드 프로세서, 컴파일러, 웹 브라우저 등 4 ) 사용자 운영체제의 역할을 자세히 이해하기 위해 사용자 관점과 시스템 관점으로 나눌 ..

    [운영체제] 소켓

    [운영체제] 소켓

    앞에서 소개한 일반 파이프와 지명 파이프로는 다른 기계에 있는 프로세스와 통신할 수 없다. 다른 기계와 통신하기 위해 사용되는 것이 소켓이다. 소켓이란 통신의 극점을 의미하며, 각 소켓은 IP주소와 포트 번호를 가진다. (IP 주소는 1024보다 큰 임의의 정수) EX ) 161.25.10.8:1625 (빨간색 : IP주소, 파란색 : 포트 주소) CF ) 127.0.0.1 은 loopback이라고 하며 현재 프로그램이 돌아가고 있는 컴퓨터를 가리킬 때 사용한다. 자바는 세 가지 종류의 소켓을 제공한다. 1 ) 연결 기반(TCP) 소켓 2 ) 비연결성(UDP) 소켓 3 ) MulticastSocket [DateClient] (서버는 책 참고) public class DateServer { public s..

    [운영체제] 파이프

    [운영체제] 파이프

    [파이프] 파이프는 두 프로세스가 통신할 수 있는 통로이다. [일반 파이프] 일반 파이프는 생산자-소비자 형태로 두 프로세스 간의 통신을 허용한다. 생산자는 파이프희 한 종단(쓰기 종단)에 쓰고, 소비자는 다른 종단(읽기 종단)에서 읽는다. 결과적으로 일반 파이프는 한쪽으로만 데이터를 전송할 수 있는 단방향 통신이다. UNIX 시스템에서는 일반 파이프는 pipe(int fd[]) 함수를 사용하여 구축된다. cf ) fd[0]은 읽기 종단, fd[1]은 쓰기 종단으로 동작한다. 파이프를 생성한 후에는 read()와 write() 시스템 콜을 사용하여 접근할 수 있다. 일반 파이프는 파이프를 생성한 프로세스 이외에는 접근을 할 수 없기 때문에 통상 부모 프로세스가 파이프를 생성하고 fork()로 생성한 자식..

    [운영체제] 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_..