네트워크 계층 네트워크 계층은 송신자측에서 수신자측까지 데이터를 안전하게 전달하기 위해 논리적 링크를 설정하고 상위 계층 데이터를 작은 크기의 패킷으로 분할하여 전송하는 역할을 수행한다. 네트워크 계층의 서비스는 크게 두 가지이다. ① 라우팅 - 패킷이 근원지에서 목적지까지 갈 수 있도록 경로를 찾는 것 ② 포워딩 - 라우터 상의 하나의 인터페이스에 패킷이 도착했을 때 라우터가 취하는 행동 IPv4 주소 1. 클래스 기반 주소 지정(Classful Addressing) 클래스 설명 클래스 A 첫 번째 bit가 0인 IP 주소. 첫 byte의 나머지 7bit가 네트워크 주소이고, 하위 3byte는 호스트 주소이다. 클래스 B 처음 두 bit가 10인 IP 주소. 첫 byte의 나머지 6bit와 두 번째 b..
데이터 링크 계층의 역할과 기능 1. 데이터 링크 계층의 역할 TCP/IP의 2계층인 데이터 링크 계층(Data Link)은 물리 계층의 있는 그대로의 전송 설비를 신뢰할 수 있는 링크로 변환합니다. 이는 상위 계층인 네트워크 계층에게 오류 없는 물리 계층으로 보이도록 합니다. 논리적 연결제어를 담당하는 LLC(Logical Link Control)/DLC(Data Link Control)와 장비 간의 물리적인 접속을 담당하는 MAC(Media Access Control)의 두 서브 계층으로 나뉘어집니다. 2. 데이터 링크 계층의 기능 ① 물리 계층에서 전송하는 비트에 대한 비트 동기 및 식별 기능 ② 흐름 제어 기능 보내는 측과 받는 측 사이의 속도 차이를 보장하여 원활한 데이터의 전송을 돕습니다. ③..
교착 상태란? 둘 이상의 프로세스들이 자원을 점유한 상태(Hold)에서 서로 다른 프로세스가 점유하고 있는 자원을 요구(Request)하며 무한정 기다리는 현상입니다. 교착 상태 발생 조건 다음 네 가지 조건이 모두 만족되어야 Deadlock이 발생합니다. 1. 상호 배제 한 프로세스에 의해 점유된 자원을 다른 프로세스들이 접근할 수 없어야 한다. 2. 점유와 대기 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가 로 점유하기 위해 대기하는 프로세스가 있어야 한다. 3. 비선점 프로세스가 자원을 비선점하고 있기 때문이다. 비선점 자원은 그 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이를 이용할 수 있습니다. 즉, 어떤 프로세스도 다른 프로세스의 자원을 강제..
service, daemon 백그라운드에서 동작하는 기능을 관리하며, 부팅 시 자동으로 실행되는 프로세스 ① Windows: 서비스 ② Linux: 데몬 PCB(Process Control Block) 한정된 CPU 자원을 프로세스에게 배분하고, 프로세스의 실행 순서를 관리하는 자료 구조. (프로세스와 관련된 정보를 저장) 즉, 운영체제는 PCB를 통해 특정 프로세스를 식별하고, 해당 프로세스를 처리하는데 필요한 정보를 판단합니다. 그럼 PCB에 저장되는 정보는 무엇일까요? ① PID ② 레지스터 값: 해당 프로세스가 실행하며 사용했던 PC를 비롯한 레지스터 값들 ③ 프로세스 상태 ④ CPU 스케줄링 정보 ⑤ 메모리 관리 정보: 프로세스가 메모리에 저장된 주소 ⑥ 사용한 파일과 I/O Device 목록 ..
이중 모드와 시스템 호출 운영체제는 응용 프로그램들이 자원에 접근하려할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호합니다. 예를 들어 프로그램 실행 중에 하드 디스크에 접근하여 데이터를 저장하려면 운영체제에 도움을 요청한 후, 운영체제가 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드를 실행하여 응용 프로그램의 작업을 대신 수행합니다. 이러한 운영체제의 문지기 역할을 이중 모드라고 합니다. CPU가 명령어를 실행하는 방식을 사용자 모드 or 커널 모드로 구분하는 방식입니다. ① 사용자 모드 일반적인 응용 프로그램의 실행 모드. ② 커널 모드 커널 영역의 코드를 실행할 수 있는 모드.(자원 접근 명령) 이때 운영체제 서비스를 제공 받기 위해 (사용자 모드 → 커널 모드) or (커널 모드 →..
RAID란? 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술을 의미합니다. RAID 종류 1. RAID 0 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식. 데이터를 분산하여 저장하는 것을 스트라이핑이라고 합니다. 단점: 저장된 데이터가 안전하지 않습니다. 여러 드라이브 중 하나에 문제가 생기면, 다른 모든 드라이브의 정보를 읽는데 문제가 발생합니다. 2. RAID 1 복사본을 만드는 방식. 동일한 데이터가 두 개 이상의 디스크에 동시에 저장되고, 하나의 디스크에 오류가 발생해도 다른 디스크의 데이터를 사용합니다. 이를 Mirroring 방식이라고 합니다. 단점: 디스크 개수가 한정되었을 때 사용 가능한 용량이 적어지는 단점..
낮은 전송률과 장치 컨트롤러 전송률이란 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표입니다. 전송률이 낮은 입출력 장치는 같은 시간동안 전송률이 높은 CPU, 메모리에 비해 적은 양의 데이터를 주고 받을 수 있어서 서로 간의 통신이 수월하지가 않겠죠. 이와 같은 이유로 입출력 장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러(입출력 제어기, 입출력 모듈)라는 하드웨어를 통해 연결되어 컴퓨터 내부와 통신합니다. (장치 컨트롤러는 하나 이상의 입출력 장치와 연결) 1. 장치 컨트롤러의 역할 ① CPU와 입출력 장치 간 통신 중개 ② 오류 검출 ③ 데이터 버퍼링 : 버퍼라는 임시 저장 공간에 데이터를 조금씩 모았다가 한번에 전송 혹은 한번에 많이 받아 놓았다가 조금씩 전송하는 방법. 이를 통해 CPU..
명령어 사이클 프로그램은 수많은 명령어로 이루어져 있으며, CPU는 이 많은 명령어를 하나씩 처리합니다. 이때 프로그램 속 명령어들은 일정한 주기가 반복되며 실행되는데, 이 주기를 명령어 사이클이라고 합니다. 크게 인출 사이클과 실행 사이클로 구분합니다. ① 인출 사이클 메모리에 있는 명령어를 CPU로 가지고 오는 단계 ② 실행 사이클 인출한 명령어를 실행하는 단계 인출한 명령어를 바로 실행이 가능한 경우가 있지만 메모리 접근이 더 필요한 경우 간접 사이클이 포함될 수 있습니다. 인터럽트 인터럽트란 CPU의 작업을 방해하는 신호입니다. 어떤 상황에서 인터럽트가 발생하느냐에 따라 동기 인터럽트와 비동기 인터럽트로 나뉩니다. 통상적으로 인터럽트는 비동기 인터럽트를 의미합니다. 1. 동기 인터럽트 CPU가 실..
앞선 포스팅에서 CPU는 메모리에 저장된 명령어를 읽고, 해석하고, 실행하는 장치라 했습니다. 그리고 CPU 내부에는 계산기인 ALU, 명령어를 읽고 해석하는 제어장치, 작은 임시 저장 장치인 레지스터라는 구성 요소가 있습니다. 이번 장에서는 각 구성요소와 CPU 작동 원리를 학습합니다. ALU ALU는 계산기입니다. 1 + 2라는 계산을 위해서는 1, 2라는 피연산자와 +라는 수행 연산이 필요합니다. 그래서 ALU는 레지스터를 통해 피연산자를 받아들이고, 제어장치로부터 수행할 연산을 알려주는 제어 신호를 받아들입니다. 그렇다면 ALU가 반환하는 정보는 무엇일까요? ① 수행 결과 수행 결과는 특정 숫자나, 문자, 메모리 주소가 될 수 있습니다. 그리고 이 결괏값은 바로 메모리에 저장되지 않고 일시적으로 ..
정보의 표현 컴퓨터가 받아들이고 처리하는 정보의 종류로는 프로그램 코드(program code)와 데이터(data)가 있습니다. 컴퓨터에서 그러한 정보들은 모두 2진수(binary)를 나타내는 비트(bit)들의 조합으로 표현됩니다. ※ 2진수로 음수 표현하는 방법 → "2의 보수"를 이용 양수를 음수로 표현할 때 2진수의 모든 비트를 뒤집고(1→0, 0→1), 1을 더하는 방법. 11 = 01101(2) -11 = 10010 + 1 = 10011(2) ※ 2진수로 문자 표현하는 방법 → "인코딩, 디코딩"을 이용 대표적인 인코딩 방법: UTF-8(모든 나라의 언어를 1~4 바이트로 표현하는 방법) 컴퓨터 프로그램은 C, Python 등과 같은 고급 언어를 이용해서 작성되며, 이를 컴파일러(Compiler..