본문 바로가기

Computer science6

3. Physical Layer - Data와 Signals 그리고 Bandwidth 물리 계층에 대해 들어가기 전에 데이터와 신호에 대한 개념이 필요한가보다. 데이터 통신에서 데이터는 두 가지 종류가 있다. 1. 아날로그 데이터 - 연속적인 정보를 가지고 있는 데이터 2. 디지털 데이터 - 불연속적인 정보를 가지고 있는 데이터 아날로그 데이터와 디지털 데이터를 각 각 신호로 나타내면 그림 A처럼 표현할 수 있다. 각 신호는 주기적인 신호(Periodic)와 비주기적인 신호(Non-Periodic)로 구분할 수 있다. 주기적인 신호는 일정한 패턴이 동일한 시간 내 반복되는 것을 말하고 사이클을 형성한다고 한다. 비주기적인 신호는 시간이 지남에 따라 반복되는 패턴 없이 신호가 바뀌는 것을 말한다. 대표적으로 그림 B와 같은 정형파가 주기적인 신호에 속한다. 그 외, 그림 A와 같은 신호들은.. 2024. 4. 23.
2. Protocol Model Seven layers of the OSI Model OSI는 응용 프로그램 계층, 표현 계층, 세션 계층, 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층으로 7개의 레이어를 가진다. 흔히, 자격증 공부에서는 '물데네 전세표응'으로 외우는 유명한 녀석이다. OSI의 7계층을 살펴보면 프로토콜의 원칙을 잘 지키고 있음을 알 수 있다. 각 레이어는 양방향으로 통신이 되며, 같은 계층을 가지고 있다. 참고로 네트워크, 데이터 링크, 물리 계층의 경우 통신 상 존재하는 중간 라우터, 스위치 등에 의해 추가적인 통신이 발생 각 계층은 어떤 일을 하는지 보자. Physical Layer 물리 계층은 그림 A와 같이 구성되어있다. 프로토콜 원칙에서 설명했지만, 각 계층은 두가지 역할을 수행해야 한다고 했.. 2024. 4. 22.
1. Protocol Layering 프로토콜이 뭘까? 프로토콜(Protocol)은 통신에서 상대방과 통신하는 방법에 대한 규약이다. 어떻게 통신할 것인지를 미리 사전에 정의해놓고 그 방식에 맞게 통신하는 것이다. 만약, 프로토콜이 없다고 가정해보자. A 회사에서 B 회사로 데이터를 전달하는데 그냥 원본 그대로 전송한다. A 회사는 전용 우편함이 존재하고 B 회사는 우편함이 따로 없다. B 회사에서 데이터를 전달 받을 때, 우편함이 없어서 사용자에게 직접 가져다 줘야하는데 우편 기사가 존재한다면 한 명, 한 명에 대해 일일이 물어보고 갖다줘야한다. 만약, B 회사에도 우편함이 존재했고 이 우편을 관리해주는 사람이 존재한다면? 알아서 다 해줄 것이다. 컴퓨터 입장에서 본다면 컴퓨터 시스템이 사용자를 찾기 위해 다른 작업을 처리하지 못하고 시간.. 2024. 4. 22.
14. CPU Scheduling CPU 스케줄링은 왜 생겼을까? 운영체제의 발전을 공부하면서 다중프로그래밍이 도입된 것을 알게됐다. 다중 프로그래밍은 I/O 처리로 인한 CPU Idle Time을 줄여서 CPU 활용률을 향상 시키기 위해서 도입 되었는데 이 때, 다중 처리를 하기 위한 기법이 CPU 스케줄링이다. 스레드까지 공부하면서 알게 된 내용은 CPU는 스레드를 스케줄링해야 한다는 것이다. 근데 어떤 스레드를 선택할 것인지 골라야한다. 위와 같은 정책을 가진 알고리즘을 크게 CPU 스케줄링 알고리즘이라고 하고 엄밀하게는 스레드 스케줄링이라고 한다. 다중 프로그래밍은 2가지 스케줄링을 통해 발생한다. 1. 작업 스케줄링(job scheduling) - 디스크 장치로부터 메모리에 올릴 작업을 선택하는 것이다. 프로세스가 시작하거나 종.. 2024. 4. 22.
12. 커널 레벨 스레드와 사용자 레벨 스레드 스레드의 레벨? 스레드는 스케줄링 주체에 따라 두 종류의 스레드로 구분된다. 1. 커널 레벨 스레드 (Kernal-Level Thread) : 커널에 의해 스케줄링 된다. 2. 사용자 레벨 스레드 (User-Level Thread) : 스레드 라이브러리에 의해 스케줄링 된다. TCB를 소유하고 있는 주체에 따라 두 종류의 스레드로 구분되는데 자세히 알아보도록 하겠다. 커널 레벨 스레드 커널 레벨 스레드는 시스템 호출을 통해서만 생성된다. 즉, 커널에 의해서만 스케줄링 되는 것이다. 하지만, 커널 코드와 달리 커널 레벨 스레드의 코드나 데이터가 커널 공간뿐 아니라 사용자 공간에도 있을 수 있다. 이게 무슨말인지 정말 헷갈렸다. thread_create() 뿐만 아니라 ktread_create()라는 스레드.. 2024. 4. 22.
6. 커널 (Kernal) 커널이란 무엇일까? 운영체제의 핵심 부분이다. 1. 운영체제란? 에서도 설명했지만 컴퓨터를 부팅하게 된다면 OS를 실행하기 위해 기본적인 실행코드들이 실행된다. 이 때, 커널 코드와 GUI, 작업 스케쥴러에 의한 최초 실행 프로그램들이 메모리에 적재된다. 그 중 우리는 운영체제의 모든 정보를 관리하고 있는 커널에 대해서만 생각해야한다. 커널에는 시스템 호출(System Call)과 인터럽트(Interrupt)라는 인터페이스가 제공되고 있다. 앞서, 설명한 내용이지만 시스템 호출은 응용 프로그램과 OS 간에 인터페이스이고 인터럽트는 HW와 OS 간에 인터페이스이다. 시스템 호출에서 제공하는 기능들은 open(), close(), fork()와 같이 ABI라고도 불리는 유명한 시스템 프로그래밍 기능들이다. .. 2024. 4. 21.