분류 전체보기 107

[Docker] Docker References - RUN

RUN 명령어는 2개의 형태를 가진다. RUN ⇒ 여기서의 command는 shell 형식의 명령어다. Linux에서는 /bin/sh -c, Windows 에서는 cmd /S /C가 생략된 거라 보면 된다. RUN ["executable", "param1", "param2"] ⇒ 이를 exec form 이라고 함 RUN 명령어(instruction)는 현재의 이미지 위에 새로운 층(layer)에서 명령을 실행하고 결과를 커밋한다. 커밋된 결과 이미지는 Dockerfile의 다음 단계에서 사용된다. 이렇게 층층이 쌓이는 RUN 명령어와 커밋들은 커밋이 간편하고 컨테이너가 Docker의 핵심적인 개념을 준수한다. exec form을 통해 shell string을 처리해야 하는 작업을 피할 수 있고 shell..

Docker 2023.09.13

[OS] 3-3. 프로세스에 대한 연산

대부분의 시스템에서 프로세스들은 병행 실행되면서 동적으로 생성되고 제거되야 한다. 때문에 OS는 프로세스 생성 및 종료를 위한 기능을 제공해야한다. 이번 페이지에서는 프로세스 생성 방법에 대해 살펴보도록 하겠다 . 1. 프로세스 생성 프로세스가 실행되는 동안 하나의 프로세스는 여러 개의 새로운 프로세스들을 생성할 수 있다. 이때, 프로세스를 생성한 프로세스를 부모 프로세스라고 하고 생성된 프로세스를 자식 프로세스라고 한다. 마찬가지로 자식 프로세스들도 프로세스를 생성할 수 있다. 이 결과들을 그림으로 표현하면 하나의 트리가 완성된다. 대부분의 현대 OS들은 프로세스 식별자(pid)를 사용해서 프로세스를 구분한다. 당연히 pid는 시스템의 각 프로세스에 고유한 값을 가지도록 할당된다. 이 식별자는 프로세스..

OS Concepts 10th 2023.09.06

[Network] 3-1. 전송계층 서비스 및 개요

전송 계층(transport layer)에 대해서 다뤘던 내용을 간략하게 살펴보도록 하자. 전송계층 프로토콜은 서로 다른 host에서 동작하는 애플리케이션 프로세스간에 논리적 통신(logical communication)을 제공한다. 논리적 통신이란 애플리케이션 관점에서 보면 프로세스들이 동작하고 있는 호스트들이 직접 연결된 것 처럼 보인다는 것을 의미한다. 실제로 host 들은 서로 다른 지역에 있기 때문에 물리적으로는 직접적으로 연결 될 수 없다. 애플리케이션 프로세스는 메시지 운반에 사용되는 물리적 인프라의 세부사항에 관계없이 서로 메시지를 송/수신하기 위해 전송 계층에서 제공하는 논리적 통신을 사용한다. 논리적 통신의 개념 그림 위 그림과 같이 전송 계층 프로토콜은 종단 시스템(end system..

[Docker] Dockerfile References - FROM

기본적인 문법 FROM [--platform=] [AS ] 또는 FROM [--platform=] [:] [AS ] 또는 FROM [--platform=] [@] [AS ]FROM 명령어는 새로운 빌드 stage를 초기화하고 뒤이어 나오는 명령어들에 대해 Base Image를 설정한다. 제대로 된 Dockerfile은 반드시 FROM 명령어 부터 시작해야 한다. 공식적으로 배포되는 이미지를 pull하면서 시작해야 편하다. FROM 명령어에서 사용하는 변수들 ARG : Dockerfile에서 FROM보다 앞에 위치하는 유일한 명령어다. 관련 내용은 잠시 후에 살펴본다. 'FROM' : 하나의 Dockerfile에 여러 번 FROM 명렁어를 사용할 수 있다. 그러면 여러 개의 이미지를 만들 수..

Docker 2023.09.05

[OS] 3-2. 프로세스 스케쥴링

다중 프로그래밍의 목적은 CPU 이용을 최대화하기 위해 항상 어떤 프로세스를 실행되도록 하는데 있다. 시분할(time sharing)의 목적은 각 프로그램이 실행되는 동안 사용자가 상호작용할 수 있도록 프로세스들 사이에서 CPU 코어를 빈번하게 교체하는 것이다. 때문에, 어떤 프로세스를 선택해야 하는지 결정해주는 프로세스 스케쥴러가 필요하다. 각 CPU 코어는 한 번에 하나의 프로세스를 실행할 수 있다. 단일 CPU 코어 ⇒ 한 번에 하나의 프로세스를 실행할 수 있다. 다중 CPU 코어 ⇒ 한 번에 여러 개의 프로세스를 실행할 수 있다. 코어보다 많은 프로세스가 있다면 남아있는 프로세스는 코어를 사용할 수 있는 상태에서 다시 스케쥴 될 때 까지 대기해야 한다. 이때, 현재 메모리에 있는 프로세스의 개수를..

OS Concepts 10th 2023.09.05

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

전송 계층은 각기 다른 host에서 동작하는 애플리케이션 프로세스에 직접적인 통신 서비스를 제공하는 중요한 기능을 갖는다. 이번 챕터에서는 TCP와 UDP 프로토콜을 중심으로 전송 계층의 원리와 이 원리가 기존 프로토콜에서 어떻게 구현되어 있는지 번갈아 살펴볼 것이다. ① 전송계층과 네트워크 계층 간의 관계를 논의한다. 이를 통해 전송계층의 첫 번째 중요한 기능을 살펴본다. 즉, 양쪽 종단 시스템 간의 네트워크 계층의 전달 서비스에서 종단 시스템에서 동작하는 2개의 애플리케이션 계층 프로세스 간의 전달 서비스로 확장한다. 이 장에서 비연결형 전송 프로토콜인 UDP를 다룰 때 이 기능을 설명한다. ② 컴퓨터 네트워킹의 기본 문제에 대해서 다룬다. (데이터 손실, 손상 관련) 즉, 데이터 손실이나 손상이 일..

[OS] 3-1. 프로세스 개념

OS를 논의할 때 모든 CPU 활동을 어떻게 지칭해야 하는지가 항상 문제가 된다. 초창기 컴퓨터 ⇒ 작업(job)을 실행하는 일괄처리 시스템 시분할 시스템 ⇒ 사용자 프로그램 또는 태스크(task)를 실행하는 시스템 단일 사용자 시스템 ⇒ 워드 프로세서, 웹 브라우저와 같은 여러 프로그램을 한 번에 실행할 수 있다. 임베디드 장치 ⇒ 멀티 태스킹을 지원하지 않아서 한 번에 하나의 프로그램만 실행할 수 있다. 여러 측면에서 이러한 모든 활동들은 유사하므로 이러한 모든 활동을 프로세스(process)라고 한다. 대부분은 프로세스라는 용어도 사용할 것이지만 작업(job)이라는 단어가 사용될 때 많은 OS 이론 및 용어가 개발되었기 때문에 적절한 경우에는 작업(job)이라는 단어를 사용할 것이다. 1. 프로세스..

OS Concepts 10th 2023.09.04

[OS] Chapter 3. Process

초기 컴퓨터 시스템은 한 번에 하나의 프로그램만 실행되도록 허용했다. 오늘날의 컴퓨터 시스템은 메모리에 다수의 프로그램이 적재(load)되어 병행 실행되는 것을 허용한다. 때문에 여러 개의 프로그램을 보다 견고하게 제어하고 구획화할 필요성이 대두되었다. 이러한 필요성 때문에 프로세스라는 개념이 고안되었다. 프로세스란... 실행 중인 프로그램을 말한다. 프로세스는 현대 컴퓨팅 시스템에서 작업의 단위이다. OS의 주된 관심은 사용자 프로그램을 실행하는 것이지만 사용자 공간에서 제대로 수행할 수 있는 다양한 시스템 작업들을 처리할 필요가 있다. 그래서 하나의 시스템은 사용자 코드를 실행하는 프로세스와 OS 코드를 실행하는 프로세스의 집합체다. 이번 챕터에서는 프로세스란 무엇이고 OS에서 어떻게 표현되는지 OS..

OS Concepts 10th 2023.09.03

[OS] 2-8. OS 구조

1장에서 논의했던 OS의 구성요소들이 어떤 방법으로 서로 연결되어 있고 하나의 커널로 결합되는지 살펴보자. 1. 모놀리식 구조 (Monolithic Structure) 커널의 모든 기능을 단일 주소 공간에서 실행하는 파일에 넣는 구조다. 이 방법은 OS를 설계하는 일반적인 기술이다. 이러한 구조를 갖는 대표적인 운영체제가 Unix이다. Unix는 커널과 시스템 프로그램 두 부분으로 구성된다. Unix가 발전해오면서 커널은 여러 인터페이스와 장치 드라이버로 나눌 수 있고 각각이 추가되고 확장되었다. 전통적인 Unix 운영체제의 시스템 구조 위와 같이 계층으로 구성되어 있다. 시스템 콜 인터페이스 아래 ~ 물리적 HW 위 까지가 커널 영역이다. 커널은 시스템 콜을 통해 파일 시스템, CPU 스케쥴링, 메모리..

OS Concepts 10th 2023.09.02