Computer Science 47

[ OS ] 03. 스케쥴러 (Scheduler)

[ 스케쥴러 ] 프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재한다. Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합 Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합 Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합 각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다. 장기스케줄러 Long-term Scheduler or Job Scheduler 메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할..

[ OS ] 02. 멀티스레드

[ 멀티 스레드 ] 멀티 쓰레드 모델을 살펴보기 전에 먼저 User Thread와 Kernel Thread에 관해 살펴보자. 말 그대로 User Thread는 User level의 Thread 라이브러리를 통해 관리되는 Thread를 말하며 Kernel Thread는 운영체제가 제공하고 직접 관리하는 Thread를 말한다 Multi-Thread에는 총 네 가지 모델이 있다. Many-to-One Model Kernel Thread가 다수의 User Thread를 처리하는 구조이다. 이러한 구조는 User Thread를 처리하던 중 System call에 의해 blocking이 된다면 전체 프로세스가 막히는 병목현상이 일어나게 되는 문제점을 갖고 있다. One-to-One Model One-to-One m..

[ OS ] 01. 프로세스간 통신 - IPC, RPC

[ 프로세스간 통신 ] IPC Inter Process Communication 각 프로세스들이 통신하는 모든 형태를 일컫는다. 이에는 다양한 형태의 메세지 전달 방식이 포함된다. 종류 Shared Memory 프로세스간 공유되는 메모리 영역을 만들어 사용하는 방법 프로세스들은 읽기/쓰기를 통해 공유영역을 수정할 수 있다. 주로 부모/자식 프로세스 간에 사용한다. Message Passing 다른 프로세스에 message 를 보내 정보를 교환하는 방법 주로 작은 데이터를 교환하며 구현이 쉽다. system call이 잦아 자칫 느려질 수 있다. Sockets Network Communication의 Endpoint 간의 통신이다. IP Address, Port를 이용해 직접 통신한다. Pipe Messa..

[ OS ] 00. 프로세스와 스레드의 차이

[ 프로세스와 스레드의 차이 ] OS -> 프로세스 -> Thread OS에서 여러 개의 프로세스를 관리하고, 프로세스 안에서 여러 개의 Thread를 관리하는 것이 가능하고, 효율적이다. 프로세스 A Program in execution : 실행중인 프로그램 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이것들을 총칭하여 프로세스라고 한다. 구체적으로 살펴보면 프로세스는 함수의 매개변수, 복귀 주소와 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 수록하는 데이터 섹션을 포함한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 프로세..

[ Network ] 12. NAT(Network Address Translation)란?

NAT Network Address Translation NAT(네트워크 주소 변환)은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술이다. 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 한다. 그렇기 때문에 네트워크의 성능에 영향을 줄 수밖에 없다! NAT를 쓰는 이유는 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위한 경우가 대부분이다. 예를 들어 인터넷 회선을 하나 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용 하는데, 이것이 가능한 이유가 인터넷 공유기에 NAT기능이 탑재되어 있기 때문이다. 중요한 자료가 들어있는 서..

[ Network ] 11. Proxy Server란?

Proxy Server 네트워크 프로그램의 일종으로서 클라이언트 기준으로 방화벽을 넘어가서 서버와 클라이언트 간에 인터넷으로 직접 접속을 허용하여 특정 서비스를 중계해주는 역할을 하는 구조물이다. 프록시 서버는 서버에 있는 소켓을 열고, 그 소켓을 통해 인터넷으로의 통신을 허용한다. 예를 들어, 사용자의 컴퓨터가 보호받는 네트워크의 안쪽에 있고, 웹 브라우저를 사용하여 웹 검색을 하고 싶다면 방화벽 상에서 Proxy Server를 설정해야 한다. 클라이언트는 필요한 서비스를 프록시 서버에 요청하고, 서버는 클라이언트의 요청에 따라 외부 네트워크와 연결해주는 서비스 중계 역할을 한다. 클라이언트(자신의 컴퓨터)와 서버(목적지) 사이 데이터를 중계하는 중간 서버 역할!! 보통 어떤 서버에 우회 접속하거나 내..

[ Network ] 10. OSI 7계층

OSI 7계층 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것. 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 흐름을 한눈에 알아보기 쉽고, 사람들이 이해하기 쉽고, 7단계 중 특정한 곳에 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건들이지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다! 그럼 예를 들어서, PC방에서 오버워치를 하는데 연결이 끊겼다. 어디에 문제가 있는지 확인해보자 1. 모든 PC에 문제가 있다면 라우터의 문제(3계층 네트워크 계층)이거나 광랜을 제공하는 회사의 회선문제(1계층 물리 계층) 2. 한 PC만 문제가 있고 오버워치 소프트웨어에 문제가 있다면(7계층 어플리케이션 계층), 오버워치 소프트웨어에 문제가 없고 스위치게 문제가 있으면(2..

[ Network ] 09. Linux에서 FTP로 디렉토리 전체 다운받기

linux에서 FTP로 디렉토리 전체 다운받는 방법 FTP를 이용해서 특정 디렉토리 및 그 하위 내용을 모두 받으려면 (recursively) 어떻게 해야 할까? 물론 FileZilla 같은 GUI FTP 클라이언트 프로그램을 사용하면 쉽게 받을 수 있다. 하지만 GUI 프로그램을 사용할 수 없는 Shell 환경에서라면 wget 명령을 사용해서 받아오는 방법이 있다. wget [OPTION]... [URL] ... 예를 들어, FTP 서버 IP가 1.1.1.1 이고 계정은 user1 암호는 password1 받고 싶은 디렉토리 경로가 /home/user1/download 라면 아래와 같이 입력하면 된다. wget -r --ftp-user=user1 --ftp-password=password1 ftp://..

[ Network ] 08. FTP(File Transfer Protocol)

FTP File Transfer Protocol 파일전송 프로토콜의 약자로 TCP/IP 네트워크 상에서 컴퓨터들이 파일을 교환하기 위해 1971년에 최초로 공개된 통신 규약이다. 네트워크에 연결된 컴퓨터끼리 데이터를 원활하게 교환하기 위한 목적으로 개발되었다. 파생형으로 FTP에 TLS 프로토콜이 적용된 FTPS가 있으며, 비슷한 기능을 제공하는 SSH 프로토콜 기반의 SFTP가 있다. SFTP는 FTP라는 키워드를 포함하고 있으며 용도 또한 같으나 FTP와 기술적인 연관성은 없는 완전히 다른 프로토콜임을 주의해야 한다. FTP는 비밀번호가 평문으로 전송되어 보안성이 매우 떨어지므로 FTPS를 사용하는걸 적극 권장한다. FTPS의 경우 PROT P를 사용하면 데이터 전송까지 암호화되어 높은 보안성을 지니..

[ Network ] 07. 핸드세이크(Handshake)

핸드세이크(Handshake) 통신의 양측 간에 조건에 합의해 가는 정보 교환 과정 - DTE, DCE DTE : Data Terminal Equipment DCE : Data Communications Equipment DTE 사용자 - 네트워크 인터페이스의 사용자측에서 데이터발신 장치나 수신 장치, 또는 두 가지 겸용으로 사용되는 장치 DTE는 반드시 모뎀과 같은 DCE 장치를 통해 데이터 네트워크에 연결되며, 일반적으로 DCE에 의해 생성된 클럭처리 신호를 말한다. DTE에는 컴퓨터, 멀티플렉서, 라우터 등과 같은 장치가 포함된다. DCE 사용자 - 네트워크 인터페이스의 네트워크 측으로 구성되는 통신 네트워크 장비의 연결 수단 DCE는 네트워크로 연결되는 물리적 수단이며, 트래픽을 전송하고, DCE..

[ Network ] 06. SSL/TLS

SSL/TLS란? Secure Socket Layer, Transport Layer Security 전송 계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화 수행 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서 안전한 보안 채널을 형성해 주는 역할을 수행하는 보안용 프로토콜 주요 응용 HTTP(HTTPS), FTP(FTPS), TELEMENT, SMTP, SIP, POP, IMAP 등에서 사용 가능 주로, 웹 브라우저와 웹 서버사이의 안전한 보안 채널을 제공하기 위해 많이 사용된다 OpenSSL *DTLS는 TLS프로토콜은 UDP에 적용가능하게 해주는 UDP를 위한 프로토콜이다. 그러므로 UDP기반의 애플리케이션들은 이 DTLS를 사용함으로 도청, 간섭, 메시지 변조 등 네트워크..

[ Network ] 05. TCP와 UDP

TCP 와 UDP 전송 계층에는 크게 TCP(Transmission Control Protocol) 와 UDP(User Datagram Protocol) 2가지 프로토콜이 있다. -TCP 연결지향적이며 오류제어, 흐름제어, 혼잡제어, 타이머재전송 등의 기능을 하며 연결지향이란말은 데이타를 전송하는 측과 데이타를 전송받는 측에서 전용의 데이타 전송 선로(Session)을 만든다는 의미이다. 데이타의 신뢰도가 중요하다고 판단될때 주로 사용된다.(가상회선 방식 패킷교환) -UDP 비연결지향이며, 최소한의 오류제어 기능만 수행한다. 단순히 데이타를 받거나, 던져주기만 하는 프로토콜이다. UDP는 특히 실시간 멀티미디어 정보를 처리하기 위해서 주로 사용한다.(데이터그램 방식 패킷교환) 여기서 딱 보이는 둘의 차이..

[ Network ] 04. 전송계층(Transport Layer)

전송계층(Transport Layer) 먼저 네트워크란 데이터를 교환하기 위해 전송 매체를 매개로 서로 연결되어 있는 것이고 인터넷은 전세계 컴퓨터들이 서로 연결되어있는 거대한 네트워크를 뜻한다. 사람간의 대화에서 같은 언어를 이용해 의사소통 하듯 네트워크 상에서 데이터를 주고받기 위해서 일종의 정해진 규약이 있는데 이것을 프로토콜이라고 부른다. 네트워크 상에서 정보를 주고받으려면 어느 경로로 보낼지 어떤 방식으로 데이터를 보낼지 등등 고려해야할 사항이 많다. 만약 하나의 규약을 정해놓았다면 문제가 발생 하였을시 전체를 바꾸어야 하고 또 문제가 발생하기도 쉬울 것이다. 그래서 역할을 나누어 네트워크는 네트워크 계층 구조를 가지게 되었다. 각각의 계층은 모듈단위로 독립적이지만 서로 상호 유기적인 관계를 가..

[ Network ] 03. CAN통신에 관하여

CAN통신이란? Controller Area Network 개요 1985년 벤츠의 의뢰로 Bosch사에서 차량 네트워크용으로 최초로 개발 1980년대까지 자동차는 대부분 기계식 기술의 발전으로 자동차에 다양한 모듈(ECU)들이 생기기 시작 UART의 통신은 각 모듈이 1:1통신을 해서 모듈이 추가될 때마다 더 많은 연결선이 필요 CAN통신은 자동차 내부 전장 및 산업용 제어기에 많이 사용 된다. 노이즈에 강하고 프레임을 하드웨어적으로 처리하므로 스프퉤어 처리가 비교적 단순하다 특징 Multi-Master 구조 통신 신호 충돌 대책이 있음(CSMA/CA) 메시지 ID간 우선 순위가 있다 데이터 송신 충돌 정지 시, 선로가 비어 있을때 자동 재 전송 기능 통신 속도 : 최대 1MBPS 까지 통신 가능 통신 ..

[ Network ] 02. I2C통신에 관하여

이 글은 I2C에 대한 전반적인 설명과 I2C 통신을 GPIO를 이용하여 코드로 구현한 것이므로 매우 긴글임을 주의** I2C란? 1. alc5633q가 무엇이냐? I2C + I2S Stereo Audio Codec 기능을 가지고 있는 반도체 부품 중의 하나. 2. I2C는 무엇이냐? I2C(Inter-Intergrated Circuit, 또는 TWI - Two Wire Interface)는 복수 개의 슬레이브 장치가 복수개의 마스터 장치와 통신하기 위한 프로토콜이다. SPI와 마찬가지로 하나의 완성품을 구성하는 요소들 간의 근거리 통신을 위해 고안되었음. 비동기식 시리얼통신(이하 UART)은 클럭을 맞춰줘야 하고 데이터 라인으로 들어오는 신호를 항상 주시해야 하기 때문에 오버헤드가 있으며 하드웨어가 복..