분류 전체보기 82

[Lecture 4-2] Transport Layer (1) : Overview & UDP

네트워크 통신이 이루어지는 계층 구조 1. Application Layer Socket 을 통해서 Message 를 전송 2. Transport Layer Segment 의 Data 에 Message 를 담고 전송에 필요한 부가정보를 Header 에 담음 3. Network Layer Packet 의 Data 에 Segment 를 담고 전송에 필요한 부가정보를 Header 에 담음 4. Link Layer Frame 의 Data 에 Packet 을 담고 전송에 필요한 부가정보를 Header 에 담음 각 계층 구조별로 자신과 같은 계층 상의 상대방만 보일 뿐, 다른 계층에 대해서는 신경쓰지 않는다. 레이어별로 전송 단위가 달라지는 것을 눈여겨 볼 것. Transport Layer 의 역할 전송 계층은 서로..

Computer Network 2020.06.29

[OS] Threads

Process 와 Thread 간의 관계를 이해하기 쉽게 프로세스를 다시 정의하자면, 프로세스는 Task 와 Thread 를 더한 것이다. 다시 말해 프로세스가 처리해야 하는 어떠한 작업, 그리고 그 작업을 수행하는 작업자를 합쳐서 프로세스라 부르는 것이다. 궁극적으로 쓰레드들이 특정 작업을 처리하게 되므로 쓰레드는 CPU이용의 기본 단위가 된다. 전통적인 Heavyweight 프로세스는 하나의 Thread of Control 을 (제어 쓰레드) 갖고 있다. 만일 다수의 제어 쓰레드가 있다면 이 프로세스는 동시에 여러개의 작업을 처리할 수 있다. 단일 쓰레드 프로세스와 다중 쓰레드 프로세스의 차이점을 위의 그림에서 확인하자. Thread 의 구성 요소 * Thread ID * Program Counter..

카테고리 없음 2020.06.29

[Linux Programming ] File Related API

✨ Lecture 1 : 파일 시스템 시스템 API는 라이브러리 함수와 다르다는 점을 알아야 한다. 라이브러리 함수는 제조사에서 편리하게 사용자들이 이용하도록 만든 툴이다. 시스템 API는 운영체제를 베이스로 해서 만들어진 함수들이다. 제조사마다 시스템 API를 다르게 사용해 라이브러리를 만든다. 파일이란? 파일은 정보의 논리적 저장 단위이다. 운영체제는 FCB (File Control Block)을 유지하여 파일에 대한 정보를 저장한다. 운영체제에서 파일 시스템 제공 파일 시스템은 파일의 물리적 의미, 구조, 속성, 연산을 정의한다. 또한 논리적 파일을 물리적 보조 저장 장치에 매핑하는 알고리즘과 자료구조 등을 제공한다. 파일 시스템은 기본적으로 계층적 구조로 이루어져 있다. 파일의 Core - Chi..

Linux : File Management Commands

현재 디렉터리의 목록 보기 : ls * -a : 숨겨진 파일도 모두 나열한다. (보통 . 으로 시작한다) * -F : 끝 부분에 항목의 유형을 표시한다. / Directory = Socket @ Symbolic link * Executable File * -l : 파일의 상세 정보 표시 * -R : 서브 디렉토리 목록을 재귀적으로 보여준다. * -s : 파일의 크기를 블럭 수로 보여준다. 1블럭 = 1KB * 인자 : 파일 또는 디렉토리 이름 필드 의미 순서대로 * 파일의 모드(종류와 접근 권한) * 하드 링크의 개수 * 파일 소유권을 갖는 사용자 ID * 파일에 대한 권한을 지정할 수 있는 그룹 ID * 파일 크기 바이트 단위로 표시 * 파일 및 디렉토리가 최종 수정된 시간 파일의 형식 * d : 디렉..

Linux : Command Environment

* CLI, GUI, NUI (Natural User Interface) ... * NUI 는 사람의 동작을 이용해서 시스템을 제어하는 방법 * Shell : 사용자 명령 해석 및 실행. 우분투에서는 bash 가 기본. 명령 실행 구조 * 명령 행에서 명령어와 옵션 인자 입력 $ ls -la /usr/bin/a* 프롬프트, 커맨드, 옵션, 인자 인자값에 메타문자 사용 가능. ? : 1개의 임의의 캐릭터 * : 0개 이상의 임의의 캐릭터 도움말 보기 : `man` 입력. 특정 명령이나 표준 API에 대한 매뉴얼 출력 명령. script 명령어 현재 실행중인 내용을 그대로 기록할 수 있다. script [-a] [filename] * -a : 기존 파일에 덧붙임 * filename : 이름이 없으면 type..

Linux : History and Characteristics

리눅스의 정의 리눅스 커널에 기반한 UNIX 계열 운영체제의 통칭. 그렇다면 운영체제는? Unix 계열은 무슨 뜻? 리눅스 커널은 무엇인지에 대한 의문이 생길 것이다. 운영체제의 종류 운영체제는 크게 범용 운영체제와 특수 목적 운영체제로 나눌 수 있다. 범용 운영체제는 대부분의 사람들이 일반적으로 사용하는 운영체제이다. 하드웨어의 발전에 따라서 다음과 같은 순서로 발전해왔다. 1. 배치 시스템 : 한 번에 하나의 태스크만을 처리하는 시스템 2. 다중 프로그래밍 : 멀티 태스킹이 가능한 시스템 3. 시분할 시스템 : 시간을 태스크별로 분배해서 처리하는 시스템. 4. 개인용 컴퓨터 시스템 특수목적 운영체제에는 다음과 같은 종류가 있다. * 병렬 / 분산 시스템 * 실시간 시스템 * 내장형 / 휴대형 시스템 ..

[Lecture 4-1] Application Layer 마무리 : Mail Server

메일은 크게 세개의 컴포넌트가 작동하여 서비스 된다 * User Agents : Outlook 같은 메일 어플리케이션 * Mail Servers : Gmail 서버, Naver Mail 서버 등 * Simple Mail Transfer Protocol, SMTP 프로토콜 유저는 이메일을 보내거나 받는 주체로, 메일 서버를 거쳐서 메일을 받게 된다. 이 때 사용되는 프로토콜은 SMTP 프로토콜이다. HTTP를 사용하지 않고 별도의 프로토콜을 갖고 있는 이유는 메일은 받는 쪽이 항상 온라인이 아닌 경우가 많기 때문이다. 따라서 보내는 사람과 받는 사람 중간에 메일 서버들이 메일을 갖고 있다가, 사용자에게 보여주는 방식을 취해야 한다. 요컨대 HTTP는 메시지를 클라이언트 측에서 당겨오는 Pull 방식을 취하..

Computer Network 2020.06.27

[Lecture 2] Application Layer (2) : Domain Name System

DNS : 인터넷의 디렉터리 서비스 사람을 주민등록 번호로 식별할 수 있는 것과 마찬가지로, 인터넷 호스트는 Host Name 으로 식별할 수 있다. www.facebook.com 과 같은 호스트 네임은 기억하기 쉬워 사용자에게 편리하다. 하지만 호스트 네임을 통해 곧바로 IP주소를 얻을 수 없다. IP주소를 얻으려면 DNS 서버에서 해당 호스트 네임을 조회하여 주소를 찾아와야 한다. DNS 라는 용어의 이해 DNS 는 다음과 같이 두가지 의미로 이해할 수 있다. 1. DNS 서버들의 계층구조로 구현된 분산 데이터베이스 2. 호스트가 분산 데이터베이스로 질의하도록 허락하는 어플리케이션 계층 프로토콜 DNS서버는 주로 BIND (Berkely Internet Name Domain) 소프트웨어를 수행하는 유..

Computer Network 2020.06.27

[OS] Communication in Client - Server Systems

프로세스는 Shared memory 와 message passing 방법을 이용해서 서로 통신할 수 있다. (IPC) 이 방법들은 client-server 시스템에서의 통신 수단으로 활용될 수 있다.이 외에 client-server 시스템에서 활용하는 세 가지 방법에 대해서 알아보자 : socket, remote procedure calls(RPCs), pipes. Sockets소켓은 통신을 위한 종단점이다. (A socket is defined as an endpoint for communication) 프로세스의 쌍이 네트워크 상에서 통신하려면 프로세스당 하나의 소켓을 갖고 있어야 한다.소켓은 IP 주소와 port 번호를 이은 것으로 식별된다. 서버는 특정한 포트에서 클라이언트의 요청이 들어오는지를 ..

Operating System 2020.06.27

[OS] Process : A Program in Execution

Process : A Program in Execution. 프로세스를 간단히 정의하면 "실행중인 프로그램"이다. 이 정의에서 프로그램과 프로세스의 차이를 짐작할 수 있다. 프로그램은 수동적인 (Passive) 개체이다. 디스크에 저장되어있는 인스트럭션 파일 그 자체를 프로그램이라 부른다. 반면 프로세스는 Active 한 개체이다. Executable File이 메모리에 로드된 상태를 가리킨다. 왜 굳이 프로세스라는 개념을 만들어 낸 것인가? 프로세스는 프로그램 설계, 구현의 단위로도 사용될 수 있고(Design Time Entity), 실행의 단위로도(Runtime Entity) 사용될 수 있다는 점에서 유용한 개념이다. Runtime Entity 로서의 프로세스 프로세스는 Text Section (코..

Operating System 2020.06.27