갱스터하우스

[백엔드 로드맵 공부] 3. OS에 대한 전반적인 지식(1) 본문

백엔드 로드맵

[백엔드 로드맵 공부] 3. OS에 대한 전반적인 지식(1)

승갱 2022. 5. 26. 18:45

순서

1. 터미널 사용법

2. 터미널 기본 명령

3. OS의 일반적인 작동 원리

4. 프로세스 관리

5. 스레드와 동시성

 

 

 

 

 

1.터미널 사용법

터미널은 텍스트 기반 명령을 입력하고 실행할 수 있는 인터페이스이다. 

우리가 익숙한 그래픽으로 이루어진 GUI보다 텍스트 기반의 CLI를 통해 터미널을 사용하는 이유는 일부 작업을 완료하는 것이 훨씬 빠르고, 더 많은 명령과 스크립트에 접근할 수 있기 때문이다.

사용자가 컴퓨터를 조작하기 위해 명령어를 터미널에 입력하면, 쉘(보통은 Bash)이 해당 명령어를 해석하고 커널이 이를 실행하는 구조이다.

 

2. 터미널 기본 명령

grep, awk, sed, lsof, curl, wget, tail, head, less, find, ssh, kill

  • (1) grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용하는 명령어
  • (2) awk :  텍스트가 저장된 파일을 읽어서, 원하는 형식으로 행과 열로 출력하기 위해 사용하는 명령어
  • (3) sed : Stream Editor의 약자로, sed라는 명령어로 원본 텍스트 파일을  편집하는 명령어
  • (4) lsof : list oen files 약자로, 시스템에서 열려있는 파일에 대한 정보를 출력해주는 명령어
  • (5) curl : URL로 데이터를 전송하기 위한 명령줄 도구 및 라이브러리
  • (6) wget : Web Get의 약어로, 웹 상의 파일을 다운로드 받을 때 사용하는 명령어
  • (7) tail :  파일의 마지막 행을 기준으로 지정한 행까지 파일내용 일부를 출력하는 명령어
  • (8) head : 텍스트로된 파일의 앞부분을 지정한 만큼 출력하는 명령어
  • (9) less : 파일을 읽어 화면에 출력하는 명령어(대용량 파일 열어볼 때 빠르게 사용 가능)
  • (10) find : 특정한 파일을 찾는 명령어
  • (11) ssh : Secure Shell의 약어로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜
  • (12) kill : 특정 PID 프로세스 종료 명령어

 

 

3. OS의 일반적인 작동 원리

3.1 운영체제(OS : Operating System)란?

운영체제는 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어이며, 

한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공한다.

또한 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당한다.

 

운영체제가 하는 일

  • Process Management
  • Memory Management
  • Storage Management
  • Protection and Security

 

3.2 OS 특징

(1) 운영체제의 일반적 특징

특징 설명
사용자 편리성 제공 한정된 시스템 자원을 효과적으로 사용할 수 있또록 관리 및 운영함
인터페이스 기능을 담당 컴퓨터 시스템과 사용자를 연결함
스케줄링 담당 다중 사용자와 다중 으용 프로그램 환경하에서 자원의 현재 상태를 파악하고 자원 분배를 위한 스케줄링을 담당
자원 관리 CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 관리함
제어 기능 입출력 장치와 사용자 프로그램을 제어

 

(2) 운영체제에서 커널의 기능

운영체제는 크게 인터페이스(쉘) + 커널의 구조이다.

  • 커널 : 운영체제의 핵심이 되는 기능들이 모여있는 컴퓨터 프로그램 (하드 웨어와 관련된 내부적인 역할)
  • 쉘 : 운영체계의 가장 바깥 부분에 위치해서 사용자 명령에 대한 처리 담당하는 역할

운영체제의 핵심적인 기능들이 커널에 모여있다면, 인터페이스(GUI)는 이러한 커널을 사용자가 보다 편리하게 사용할 수 있게 해준다.

 

3.3 OS 종류

(1) 윈도우즈(Windows) 운영체제

(2) 유닉스(Unix) 운영체제

  • 리눅스(Linux) 운영체제(데비안, 레드헷, Fedora, Ubuntu, CentOS 등)
  • 맥(Mac) 운영체제
  • 안드로이드(Android) 운영체제 

 

3.4 OS Services

(1) helpful to the user

  • User interface
  • Program execution
  • I/O operations
  • File-system manipulation
  • Communications
  • Error detction

(2) for ensuring the efficient operation of the system itself

  • Resource allocation
  • Accounting
  • Protection and security

 

3.5 OS 작동 방식

운영체제는 interrupt-driven 방식으로 사용자의 요청(Event 혹은 Interrupt)이 발생하면, 운영체제는 적절하게 작원(CPU, I/O, 메모리 등)을 분배하여 그 요청을 처리하는 구조이다.

 

Interrupt 

  1. H/W interrupt : I/O, 메몰, CPU와 관련된 interrupt
  2. S/W interrupt : 프로그램 Errors, 운영체제 Services들에 대한 요청인 SystemCall이 있다.

 

S/W 문제 예방

S/W interrupt는 잘못 처리하면 한 작업이 자원을 계속 점유하거나 컴퓨터의 동작을 크게 저해할 수 있기 때문에, 여러 방법을 써서 이를 예방해야한다.

  1. Daul-Mode Execution : User Mode, Kernel Mode로 나눠 사용자가 접근하기 못하게 하는 방식
  2. Timer : 프로세스에 유효 시간을 부여하는 방식

 

 

4. 프로세스 관리

4.1 프로세스란?

프로세스(Process)란 일반적으로 CPU에 의해 처리되는 프로그램으로 현재 실행 중인 프로그램이다.

 

4.2 프로세스 상태

하나의 프로세스는 여러 가지 이벤트에 의해 일련의 서로 구분되는 상태 변화를 겪으며, 생성, 준비, 실행, 대기, 완료 상태 중 하나를 가진다.

 

  • New : The process is being created.
  • Running : Instructions are being executed.
  • Waiting : The process is waiting for some event to occur (such as an I/O completion or reception of a signal).
  • Ready : The process is waiting to be assigned to a processor.
  • Terminated : The process has finished execution.
프로세스 상태 전이 설명
Dispatch
(Waiting  Running)
● 준비(Ready) 상태에 있는 여러 프로세스(Ready List) 중 실행될 프로세스를 선정(Scheduling)하여 할당(Dispatching)  문맥교환 발생
● 프로세스는 준비(Waiting) 상태에서 실행(Running) 상태로 전이
Timer run out = 할당 시간 초과
(Running Ready)
● CPU를 할당받은 프로세스는 지정된 시간이 초과되면 스케줄러에 의해 PCB 저장, CPU 반납 후 다시 준비 상태로 전이됨.
● 프로세스는 실행(Running) 상태에서 준비(Waiting) 상태로 전이
● 타임 슬라이스(Time Slice) 만료, 선점(Preemption) 시 타임 아웃 발생
Block = 입출력 발생 ● 실행 상태에 있는 프로세스가 지정된 할당 시간을 초과하기 전에 입출력이나 기타 사건이 발생(block)하면 CPU를 스스로 반납하고 입출력이 완료될 때까지 대기 상태로 전이됨
● 프로세스는 실행(Running) 상태에서 대기(Waiting) 상태로 전이
즉시 실행 불가능한 시스템 콜, I/O 작업 시작, 프로세스간 통신 시 Block 발생
Wake-up = 깨움
(Waiting Ready)
● 어느 순간에 입출력이 종료되면 대기 상태의 프로세스에게 입출력 종료 사실을 wait & signal 등에 의해 알려주고, 준비 상태로 전이됨
● 프로세스는 대기(Waiting) 상태에서 준비(Waiting) 상태로 전이

 

 

4.3 PCB(Process Control Block)

운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓은 곳으로, 프로세스의 상태 정보를 저장하는 자료구조이며, Task Control Block(TCB)이라고도 한다.

운영체제에서 프로세스는 PCB로 표현되고, 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB도 함께 제거된다.

PCB는 프로세스 상태 관리와 문맥 교환(Context switching)을 위해서 필요하다.

  • 문맥 교환(Context switching) : CPU가 현재 실행하고 있는 프로세스의 문맥 상태를 프로세스 제어블록(PCB)에 저장하고 다음 프로세스의 PCB로 부터 문맥을 복원하는 작업을 문맥교환이라고 한다.

 

포함된 항목

  • 포인터
  • 프로세스 상태
  • 프로세스 번호
  • 프로그램 카운터
  • 레지스터
  • 메모리 제한
  • 열린 파일 목록

 

4.4 프로세스 큐(Queue)

프로세스는 수행하면서 상태가 여러 번 변하는데 이에 따라 서비스를 받아야하는 곳이 다르며, 프로세스는 일반적으로 여러 개가 한 번에 수행되므로 그에 따른 순서가 필요하다.

이러한 순서를 대기하는 곳을 큐(Queue)라고 한다.

  • Ready Queue : CPU 점유 순서를 기다리는 큐
  • Job Queue : 하드디스크에 있는 프로그램이 실행되기 위해 메인 메모리의 할당 순서를 기다리는 큐
  • Device Queue : 입출력 장치의 사용을 기다리는 큐

각 큐 내부에 저장된 실제 데이터는 각 프로세스의 PCB가 저장되어 있고 이러한 순서를 기다리는 공간이 있다면, 이 순서를 정해주는 알고리즘이 있어야 한다. 이러한 알고리즘을 스케줄링(Scheduling)이라 한다.

  • Ready Queue  - Short-term scheduler(or CPU Scheduler )
  • Job Queue - long-term scheduler(or job scheduler)
  • Device Queue - - Device Scheduler

 

 

5. 스레드와 동시성

5.1 스레드(Thread)란?

스레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위, 실제로 작업을 수행하는 주체를 의미한다.

모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다. 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 한다.

 

싱글 스레드 / 멀티 스레드

 

 

5.2 멀티 스레딩

멀티 스레드(Multi Thread)란 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미한다. 멀티 스레드는 각 스레드가 자신이 속한 프로세스의 메모리를 공유한다.

 

5.21 멀티 스레딩 장점

  • NonBlocking 처리 가능
  • Resource 자원 공유 쉽다. (프로세스의 shared-memory 나 message-passing 방식에 비해 쉽다.)
  • Context switching 비용 적다. (프로세스보다 적은 overhead)
  • Scalability 확장성이 뛰어나다.

 

5.3 동시성(Concurrency)과 병렬성(Parallelism)

동시성 병렬성
동시에 실행되는 것 같이 보이는 것 실제로 동시에 여러 작업이 처리되는 것
싱글 코어에서 멀티 쓰레드(Multi thread)를 동작 시키는 방식 멀티 코어에서 멀티 쓰레드(Multi thread)를 동작시키는 방식
한 번에 많은 것을 처리 한 번에 많은 일을 처리
논리적인 개념 물리적인 개념

 

Concurrency, Parallelism

 

5.3.1 동시성(Concurrency)

싱글 코어에서 멀티스레드를 동작시키기 위한 방식으로, 멀티 태스킹을 위해 여러 개의 스레드가 '번갈아가면서' 실행되는 성질. 진짜 물리적으로 동시에 동작하는 것이 X

싱글 코어에서는 2개의 작업을 동시에 실행되는 것처럼 보이기 위해 번갈아 가면서 작업을 수행한다.이때, 다른 작업으로 바꾸어 실행할 때 내부적으로 Context Switch가 발생한다.

 

5.3.2 병렬성(Parallelism)

멀티 코어에서 멀티스레드를 동작시키는 방식으로, 한 개 이상의 스레드를 포함하는 각 코어들이 '동시에' 실행되는 성질.

 

 

 

 

 

 

 

 

 

 

 

출처

https://been2.tistory.com/18 

https://velog.io/@brian_kim/OS-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%9B%90%EB%A6%AC

https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-5.-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B4%80%EB%A6%AC 

https://yoongrammer.tistory.com/52 

http://tcpschool.com/java/java_thread_concept

https://velog.io/@goban/%EC%8A%A4%EB%A0%88%EB%93%9C%EC%99%80-%EB%8F%99%EC%8B%9C%EC%84%B1

https://chanto11.tistory.com/63

https://seamless.tistory.com/42