![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cb8GNB/btqZ1abEzfT/hjRjmLjgAto6xig0P4MUDK/img.png)
다중 프로그래밍 (multi-programming) CPU의 이용률을 극대화하기 위하여 고안된 기법으로써 운영체제 발전과정의 커다란 전환점이 되었다. (운영체제가 다중 프로그래밍을 구현) 하나의 프로그램이 실행되는 과정에서 입출력 요구가 발생하게 되면, 그 사건 처리가 완료될 때까지 CPU는 유휴 상태에서 기다리게 된다. 이 시간을 “CPU의 유휴 시간(idle time)”이라고 한다. (ex: C언어에서 printf(), scanf() 호출 시 CPU는 유후 상태가 됨) CPU의 유휴 시간을 활용하기 위하여 여러 개의 프로그램들을 메모리에 적재시켜 놓고 한 프로그램에서 입출력 요구가 발생하면 다른 프로그램으로 CPU 사용을 전환함으로써 CPU의 이용률을 향상시키는 것이다. 컴퓨터 시스템에서 단위 시간당..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bfWw0z/btqZ09RFF2l/qFIUUjoXo9KVC3jBkyjj8K/img.png)
컴퓨터 시스템의 하드웨어는 CPU, 메모리, 입출력 장치들로 구성되어 있다. 중앙처리장치(CPU: Central Processing Unit): 명령어를 처리한다. IP(Instruction Pointer) 혹은 PC(Program Counter) 레지스터를 이용하여 CPU가 처리해야 할 명령어의 메모리 주소를 저장한다. CPU는 전원이 ON되는 순간부터 OFF될 때까지, IP 혹은 PC 레지스터가 가리키는 곳의 메모리에 저장된 명령어 처리하기를 반복한다. IBM PC의 부팅 과정 * CPU의 PC 레지스터 이름 -> CS : EIP * PC 레지스터의 초기 값은 -> F000:FFF0 (=FFFF0) 1) ROM-BIOS(Basic Input Output System) 2) Boot Program(운영..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cJlOLJ/btqZ1awmtEj/U75RksPfW9mE4Rs7Akq5DK/img.png)
운영체제의 의미 - 일반적으로 응용 프로그램의 실행을 제어하고, 입출력 장치와 사용자 사이의 인터페이스 역할을 하는 프로그램 - 사용자 관점으로 컴퓨터 시스템을 보다 편리하게 사용할 수 있는 환경을 제공해 주는 프로그램 - 관리자 관점으로 컴퓨터 시스템의 자원들을 효율적으로 이용할 수 있도록 제어해 주는 프로그램 - 시스템 관점으로 컴퓨터 시스템이 보유하고 있는 자원들을 효율적으로 관리하고 사용자에게 편의성을 제공하기 위하여 CPU 관리, 메모리 관리, 파일 관리, 입출력 장치 관리, 그리고 사용자 인터페이스를 담당하는 루틴들이 유기적으로 결합된 프로그램 운영체제의 목적 1) 자원의 효율적 관리: 자원에는 CPU, 메모리, 디스크, 프린터, 키보드 등과 같은 하드웨어와 파일, 서비스 루틴과 같은 소프트웨..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/EQ6bM/btqZZxZ9iO8/2SeqPV05G6vwCfOqkiiFK1/img.png)
- 시스템 공간(계층 1 ~ 4): 운영 체제에서 동작 TCP, UDP는 커널 내부에 구현 사용자는 소켓 인터페이스를 이용하여 호출 후 사용 - 사용자 공간(계층 5 ~ 7): 사용자 프로그램으로 동작 - TCP/UDP: 사용자 데이터를 전송하는 전송 계층 프로토콜 - IP: 사용자 데이터를 전송하는 네트워크 계층 프로토콜 - ARP와 RARP ARP: IP 주소를 MAC 주소로 변환 RARP: MAC 주소를 IP 주소로 변환 - ICMP 오류 메시지를 전송하는 프로토콜 IP 프로토콜에 캡슐화되어 전송됨
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c6EARn/btqZ1JFhOuH/CkBcmbB6lDYRD7H4qQzCTk/img.png)
OSI 7 계층 모델 - 계층 n 프로토콜: 계층 n 모듈끼리 사용하는 통신 규칙 - 동료 프로세스(peer process): 동일 계층에 위치한 통신 양단 프로세스 - 인터페이스: 상하위 계층 사이의 접속 방법 - 서비스 : 하위 계층이 상위계층에 제공하는 기능 - 송신 호스트: 데이터가 상위 계층에서 하위 계층으로 갈수록 헤더 추가 - 수신 호스트: 데이터가 하위 계층에서 상위 계층으로 갈수록 헤더 제거 중계 기능(라우팅, Routing) : 경로 배정 기능 - 1계층 : 하드웨어 시스템으로 구성 - 2, 3, 4계층 : 운영체제로 구성 - 5, 6, 7계층 : 사용자 프로그램으로 구성 물리 계층(Physical Layer) - 개별 정보의 비트(bit) 교환 문제를 처리 - 데이터 전송 속도, 클록..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bBCjrk/btqZ7KppPlM/KEw1w9kiejcmlXP3VgRkcK/img.png)
서비스 프리미티브 - 프리미티브(primitive): 상위 계층이 하위 계층을 사용하는 방법을 정형화한 것 - 연결형 서비스 : 데이터 전송 전에 미리 연결을 설정하여 전송하는 방식 CONNECT: 연결 설정 프리미티브 DATA: 데이터 전송 프리미티브 DISCONNECT: 연결 해제 프리미티브 - 비연결형 서비스 : 각 데이터를 독립적으로 목적지 호스트로 전송하는 방식 DATA: 데이터 전송 프리미티브 연결형 프리미티브의 동작 원리 – CONNECT.Request, DATA.Request, DISCONNECT.Request – CONNECT.Indication, DATA.Indication, DISCONNECT.Indication – CONNECT.Response, DATA.Response, DISCO..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/byCWhv/btqZ1IzCT7x/joz2HkGgyYNFSIfpHmMFsK/img.png)
프로토콜 설계 시 고려 사항 1) 주소 표현 2) 오류 제어 3) 흐름 제어 4) 데이터 전달 방식 1) 주소 표현(Addressing) - 주소의 역할 : 서로를 구분하는 구분자 역할 - 주소의 활용도를 높이기 위하여 구조적 정보를 포함 전화번호: 국가 코드 – 지역 코드 - 번호 주민번호: yymmdd-abcdefg - 1:다 통신을 지원 브로드캐스팅(Broadcasting): 모든 호스트에 데이터 전달 멀티캐스팅(Multicasting): 특정 호스트에게 데이터 전달 2) 오류 제어(Error Control) - 데이터 링크 계층 : 인접 링크와의 물리적 오류 제어 - 전송 계층 : 상위 계층의 종단에서 논리적인 오류 제어 - 데이터 변형 오류: 데이터가 변경되어 수신자에게 도착 - 데이터 분실 오..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b0awEI/btqZ2cUJkfX/b3PUgtKmRbiNOdpW0DVsJk/img.png)
모듈화 - 프로토콜 설계 과정을 모듈화 - 크고 복잡한 시스템을 기능별로 여러 개의 작고 단순한 모듈로 독립화 - 함수별로 특정 기능을 독립적으로 수행하도록 함 - ex: C 프로그래밍 언어의 함수 개념 - 모듈 사이의 적절한 인터페이스가 필요 - 고장난 부분을 모듈단위로 수정하거나 교체하기 용이함 계층 구조 - 상위 모듈이 하위 모듈에게 서비스를 요청 - 하위 모듈은 서비스를 실행하고 그 결과를 상위 모듈에 통보 모듈화된 계층 구조의 장점 - 전체 시스템을 이해하기 쉬움 - 설계 및 구현이 용이 - 모듈의 독립성을 향상시킬 수 있으며, 이는 시스템 구조를 단순화시키는 장점이 됨 - 동일 계층 사이의 인터페이스인 프로토콜을 단순화시킬 수 있음 - 고장 시 특정 모듈만 수정하므로 전체 시스템의 동작에 영향..