본문 바로가기

시스템프로그래밍

(22)
[네트워크] NMS와 TMN 네트워크의 비약적인 발전으로 초기 연구 모델이었던 네트워크는 거대한 규모로 발전하였습니다. 따라서 네트워크의 관리 필요성이 대두되었습니다. 초기 몇 명의 관리자가 수작업으로 관리할 수 있엇던 것이 이제는 관리가 불가능하게 되었습니다. 이제는 관리만을 위한 별도의 시스템으로 네트워크를 관리해야 효율적으로 관리할 수 있게 되었습니다. 이 장에서는 네트워크 관리 시스템인 NMS와 망관리 시스템인 TMN에 대해 알아보도록 하겠습니다. NMS 소개 NMS네트워크가 점점 커가면서 여러 문제들을 야기하게 됩니다. 네트워크가 커진다는 것은 하드웨어와 응용프로그램들 그리고 사용자들이 늘어나고 복잡해지는 것을 의미합니다. 이때 발생하는 문제를 간단히 생각해보면 이기종의 하드웨어와 응용프로그램들이 하나의 구조 속에 포함됨으..
[네트워크] 동기 I/O와 비동기 I/O의 비교 동기 I/O와 비동기 I/O의 비교동기 실행과 비동기 실행의 차이점은 처음에는 약간 혼동될 수 있습니다. 기본적으로 입출력 동기화에는 동기 I/O와 비동기 I/O(또는 오버랩 I/O) 두 가지가 있습니다. 동기 I/O 처리에서는 스레드가 행동에 들어가면 I/O 요청이 완료될 때까지 기다려야 합니다(프로그램은 프로세스가 종료될 때까지 대기 상태에 '빠지고', 이를 빠져나갈 길은 없습니다). 비동기 환경에서 같은 행동이 일어나면 스레드는 커널의 도움을 받아 I/O 작업을 처리합니다. 실제로 스레드는 요청을 커널에 즉시 전달하고 계속해서 다른 작업을 처리합니다. 커널은 작업이 완료됐을 때 스레드에 신호를 보내고, 스레드는 현재 작업을 중단하고 I/O 작업의 데이터를 필요한대로 처리하는 것으로 이 신호에 답합니..
[네트워크] 블로킹과 논블로킹 메커니즘 블로킹 모드어떤 시스템 콜을 호출했을때 네트워크 시스템 동작이 완료할때까지 그 시스템 콜에서 프로세스가 멈춥니다.소켓 생성시 디폴트는 default 모드입니다.listen(), connect(), accept(), recv(), send(), read(), write(), recvfrom(), sento(), close()block 될 수 있는 소켓 시스템 콜입니다.I/O시 처리될 때까지 기다려야하기 때문에 비동기적인 작업 수행 불가능하게 됩니다.일대일 통신을 하거나 프로그램이 한가지 작업만 하면 되는 경우는 blocking 모드로 프로그램을 작성할 수 있습니다. 논블로킹 모드소켓 관련 시스템 콜에 대하여 네트워크 시스템이 즉시 처리할 수 없는 경우라도 시스템콜이 바로 리턴되어 응용 프로그램이 block..
[시스템프로그래밍] 주요 정리 유닉스 시스템 프로그래밍 개요 1. 프로그래밍 표준유닉스 시스템 프로그래밍 관련 표준으로는 ANSI C, IEEE의 POSIX, X/Open 그룹의 XPG3, XPG4, SVID, SUS가 있습니다. 2. 유닉스 시스템 프로그래밍의 이해유닉스 시스템이 제공하는 파일 시스템이나 사용자 정보, 시스템 시간 정보, 네트워킹 등 다양한 서비스를 이용해 프로그램을 구현할 수 있도록 제공되는 프로그래밍 인터페이스를 시스템 호출이라고 하며, 이러한 시스템 호출을 사용해 프로그램을 작성하는 일을 유닉스 시스템 프로그래밍이라고 합니다. 3. 시스템 호출과 라이브러리 함수 시스템 호출은 기본적으로 C언어의 함수 형태로 제공됩니다. 시스템 호출은 커널의 해당 모듈을 직접 호출해 작업을 수행하고 결과를 리턴합니다. 라이브러리..
[네트워크] 소켓 프로그래밍 활용 소켓 프로그래밍 기초에서는 TCP/IP 프로토콜이 무엇인지 살펴보고 이를 이용해 네트워크 프로그래밍을 하는 데 필요한 기본 개념을 다뤘습니다. TCP와 UDP의 차이점과 IP주소와 포트 번호의 역할도 알아보았습니다. 또한 TCP/IP 프로토콜 기반 프로그램 작성에 필수적인 소켓 인터페이스 관련 함수와 구조체를 살펴보고 간단한 프로그램도 작성해봤습니다. 네트워크를 통해 데이터를 주고받으며 동작하는 네트워크 프로그램은 일반적으로 서버와 클라이언트로 역할을 구분할 수 있습니다. 서버는 클라이언트의 요청에 따라 다양한 서비스를 제공하는 프로그램으로, 보통 데몬(daemon) 프로세스라고 합니다. 예를 들어, 브라우저를 통해 웹사이트에 접속할 경우 서버에는 웹 서비스를 제공하는 HTTP 데몬이 동작하고 있어 사용..