Studying/Roadmap 15

네트워크 기초 개념

1. 네트워크 인터넷의 동작에서 기술했던 거지만 다시 한번 짚고 가겠습니다. 네트워크는 분산되어 있는 컴퓨터들을 자원이나 정보를 공유하기 위해 통신망으로 연결한 것을 의미합니다. 또한 프로토콜을 사용해 데이터를 교환하는 시스템의 집합을 통칭합니다. 네트워크는 모든 종류의 물리, 논리적 자원을 공유할 수 있으므로 자원 활용이 극대화되며, 병렬 처리가 가능하여 성능이 향상됩니다. 1.1 시스템 구분 노드(Node) : 대형 네트워크에서 장치 혹은 데이터 지점(data point)를 의미합니다. 호스트(Host) : 컴퓨터의 기능이 있는 시스템 클라이언트, 서버 : 서비스를 요청하고 제공하는 시스템 1.2 네트워크 주소 네트워크 주소 : 네트워크 상 존재하는 노드를 고유하게 식별 주소의 종류 1) MAC 주소..

Studying/Roadmap 2022.04.01

POSIX 기초

1. POSIX? POSIX(Portable Operating System Interface)는 이식 가능 운영체제 인터페이스의 약자로 서로 다른 UNIX OS의 공통 API를 정리하여 이식성이 높은 UNIX 응용 프로그램을 개발하기 위한 목적으로 IEEE(전기전자 기술자협회)가 책정한 애플리케이션 인터페이스 규격입니다. 쉽게 말하면 한 OS에서 개발한 프로그램을 다른 OS에서도 쉽게 돌아가도록 하는 표준이라고 합니다. (소스코드의 호환) 2. 표준스트림 표준 스트림(standard streams)은 특정 프로그래밍 언어 인터페이스뿐만 아니라 UNIX 및 UNIX계열 OS에서 컴퓨터 프로그램과 그 환경 사이 미리 연결된 입출력통로를 가리킵니다. 표준 스트림으로 인해 프로그램에서 입출력을 사용해야할 때, ..

Studying/Roadmap 2022.04.01

입출력 관리

컴퓨터의 주요 작업에는 연산과 입출력 작업 2가지가 있습니다. 그 중 입출력 작업은 컴퓨터에 연결된 다양한 입출력 하드웨어 장치들과 어떤 식으로 소통이 이루어지는지에 관한 내용입니다. 예를 들어 마우스, 키보드, 모니터 등 다양한 장치들이 컴퓨터와 잘 동작하게 하려면 둘 사이에 공통된 인터페이스가 존재해야합니다. 바로 컴퓨터와 하드웨어 장치 사이의 공통된 인터페이스 역할을 수행하는 것이 입출력 관리의 핵심이죠. 1. 입출력 하드웨어의 구성 먼저 하드웨어 장치는 케이블 혹은 무선으로 신호를 보내 컴퓨터와 통신합니다. 이 때, 포트를 통해 컴퓨터에 접속하고, 컴퓨터에 내장된 *제어기를 통해 포트나 입출력 장치를 제어합니다. 모든 제어기는 레지스터를 가지며, 프로세서는 제어기 레지스터에 bit pattern을..

Studying/Roadmap 2022.03.30

프로세스 간 통신

1. IPC(Inter Process Communication) IPC는 프로세스 간 통신으로 프로세스들끼리 서로 데이터를 주고 받는 행위 및 방법을 말합니다. 프로세스는 위와 같이 완전히 독립된 실행객체 입니다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는 다는 장점이 있지만 독립되어 있는 만큼 별도의 설비가 없이는 서로 간 통신이 어렵다는 문제가 있습니다. 이를 위해 *커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공하게 되고, 프로세스는 커널이 제공하는 IPC설비를 이용해 프로세스 간 통신을 할 수 있게 됩니다. *커널(Kernel) OS 자체도 SW이기 때문에 메모리에 올라가야 사용할 수 있습니다. 하지만 메모리 공간의 제약으로 OS중 항상 필요한 부분만을 메모리에 올려놓고,..

Studying/Roadmap 2022.03.21

메모리 관리

1. Memory 보통 메모리라 함은 메인 메모리인 RAM을 뜻합니다. 프로그램 실행 시 필요한 주소, 정보를 저장하고 가져다 사용할 수 있게 만드는 공간을 말하죠. 이 메모리를 관리해야하는 이유가 무엇일까요? 컴퓨터에서 각각의 프로세스는 독립된 메모리 공간을 갖고, OS 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있습니다. OS체제만이 OS 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않기 때문에, OS에서 메모리를 관리합니다. 또한 멀티프로그래밍 환경으로 변화하면서 한정된 메모리를 효율적으로 사용해야 했고, OS가 이를 어떻게 관리하는에 대한 관리 방법이 중요해졌습니다. OS의 역할은 실행파일이 로더에 의해 메모리에 올라오고 OS가 이 실행파일을 메모리의 어느 부분에 올..

Studying/Roadmap 2022.03.17

스레드와 동시성

1. Thread Thread(스레드)는 어떤 프로세스 내에서 실행되는 흐름을 말합니다. int main(void) { int n = 0; int m = 10; printf("%d\n", n * m); while(n < m) n++; printf("END\n"); } 위와 같은 코드는 하나의 흐름을 가지며 이를 스레드라합니다. 일반적으로 하나의 프로그램은 하나의 스레드를 갖습니다. 그런데 하나의 프로그램에 스레드가 2개 이상 존재하는 경우가 있습니다. 이를 다중 스레드라고 합니다. 한 프로그램(프로세스)에 여러 개의 스레드가 있을 수 있는 이유는 스레드가 빠른 시간 간격으로 스위칭(교체)되기 때문입니다. 이러한 동작으로 사용자는 스레드가 동시에 실행되는 것처럼 보는 것입니다. 이처럼 CPU가 하나인 환경..

Studying/Roadmap 2022.03.14

프로세스 관리

1. Process 프로세스는 job, task라고 불리기도 하며 메인 메모리에 할당되어 실행중인 상태인 프로그램을 말합니다. 프로그램은 일반적으로 하드디스크에 저장되어 아무일도 하지 않는 상태입니다. 프로세스는 실행하면서 stack pointer, data, text, register 등 끊임없이 변합니다. 위 사진은 프로세스 상태 전이도를 나타낸 것입니다. New는 프로그램이 메인 메모리에 할당되는 상태를 말합니다. Ready상태는 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 마친 뒤, CPU가 프로세스를 실행하면 Running 상태가 됩니다. Waiting 상태는 프로세스가 끝나지 않은 시점에서 I/O로 인해 CPU를 사용하지 않고 다른 작업을 합니다. 해당 작업이 끝나면..

Studying/Roadmap 2022.03.13

운영체제의 구조와 원리

1. OS의 작업방식 Windows와 Mac Os같은 운영체제가 등장하기 전에는 MS-DOS라는 운영체제를 사용했습니다. MS-DOS는 Single tasking(단일 작업)밖에 하지 못했습니다. 예를 들어 수행해야 할 작업-1과 작업-2가 있다고 생각해봅시다. 작업-1은 CPU를 사용한 후 I/O 장치를 사용하고, 작업-2는 CPU만을 사용하는 작업이라고 예를 들어 보겠습니다 작업-1이 먼저 수행이 되면서 CPU를 사용하고 I/O를 사용하는 동안 CPU는 놀고 있음에도 불구하고 작업-2는 메모리에 올라가있지 않기 때문에 작업-1의 전체적인 작업이 끝나기 전까지 작업을 시작하지 못하였습니다. ( I/O 장치를 사용할 때도 마찬가지입니다. ) 이러한 유연하지 않은 구조는 컴퓨터 전체의 효율성을 떨어뜨렸습니..

Studying/Roadmap 2022.03.11

운영체제란?

1. OS(Operating System) OS는 사용자가 컴퓨터를 사용하기 위해 필요한 소프트웨어입니다. 컴퓨터를 사용하면서 실행하는 모든 프로그램들은 운영체제에서 제어하고 있습니다. 많이 사용하는 Windows, Mac os, Linux 등 많은 운영체제가 있습니다. 이 운영체제는 컴퓨터의 하드웨어를 관리합니다. CPU, 메모리, 키보드, 마우스, 네트워크 등 을 관리하여 컴퓨터를 좀 더 효율적으로 사용하게끔 사용자에게 편의를 제공합니다. 2. Booting 사용자가 컴퓨터를 사용하려면 컴퓨터를 켜게 되죠. 이 때, 컴퓨터에서 사용자가 OS를 시동할 때 운영 체제를 시작하는 부트스트래핑(전원을 켜거나 재부팅을 할 때 적재되는 프로그램) 과정을 부팅이라고 합니다. 위의 사진은 컴퓨터의 구조를 단순화한 ..

Studying/Roadmap 2022.03.10

호스팅이란?

1. 호스팅(Hosting)? 호스팅은 사업자가 주로 홈페이지의 서버 기능을 대행하는 것을 의미합니다. 호스팅의 종류를 살펴보며 차이점을 알아보겠습니다. 2. 웹 호스팅 본인이 HTML, CSS 같은 코드를 이용해 웹 페이지를 만들었다고해서 누구나 만든 사이트에 접속할 수 있는 것이 아니죠. 배포 과정을 거치고 도메인까지 연결을 하면 비로소 하나의 웹 페이지가 사이트가 되는 것입니다. 이 때, 개인이 서버를 구매하고 설치하는 것이 어렵기 때문에, 배포 과정을 전문업체에 맡깁니다. (임대의 개념) 3. 서버 호스팅 서버 호스팅은 서버 하나를 통째로 구매하여 서버 운영에 필요한 인프라, 기술력을 제공받을 수 있는 서비스입니다. 웹 호스팅과 웹 호스팅은 저렴한 가격으로 서버 및 인프라 구축이 필요 없지만, 서..

Studying/Roadmap 2022.03.09