본문 바로가기
카테고리 없음

운영체제

by 왕밤 2021. 10. 27.

출처 https://kim-hoya.tistory.com/5

운영체제

시스템 자원(하드웨어를 구성하는 일을 하는 CPU, 자료를 저장하는 RAM, 디스크)을 관리하는 주체 운영체제

운영체제가 없다면, 응용 프로그램이 실행될 수 없다

응용 프로그램은 컴퓨터를 이용해 다양한 작업을 하는 것이 목적

운영체제는 응용 프로그램이 하드웨어에게 일을 시킬 수 있도록 도와줌

 

운영 프로그램

운영체제를 통해 컴퓨터에게 일을 시키는 것

운영 프로그램이 운영체제가 제공하는 기능(컴퓨터를 조작할 수 있는)을 이용하기 위해서는

컴퓨터 조작 권한을 운영체제로부터 부여받아야 함

 

권한을 요청하기 위해서는 운영 체제와의 소통이 필요하다

=> 운영체제가 응용 프로그램을 위해 인터페이스(API)를 제공해야 함 (시스템 콜(System call))

 

시스템 콜(System call)?

응용 프로그램이 시스템 자원을 사용할 수 있도록, 운영체제 차원에서 다양한 함수를 제공하는 것

API는 시스템 콜로 이루어져 있음

 

프로그램

작업의 순서 / 파일이다

 

프로세스

운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 함

사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 받아 애플리케이션의 코드를 실행함

 

스레드

한 프로세스의 조각

스레드는 코드가 실행되는 하나의 흐름이기 때문에,

한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미

 

  • 프로세스 내에서 실행되는 흐름의 단위
  • 각 스레드마다 call stack이 존재(call stack: 실행중인 서브루틴을 저장하는 자료 구조)
  • 스레드는 다른 스레드와 독립적으로 동작

 

멀티 스레드(Multi-Thread)

멀티 태스킹 => 두 가지 이상의 작업을 동시에 처리하는 것

멀티 스레드 =>  하나의 프로세스가 두 가지 이상의 작업을 처리할 수 있는 것

멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면, 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹

 

사용처

대용량 데이터의 처리시간을 줄이기 위해 데이터를 분할하여 병렬*로 처리하는 데에 사용

애플리케이션에서 네트워크 통신

 

장점

시스템의 처리량(Throughput)이 향상되고 자원 소모가 줄어들어 자연스럽게 프로그램의 응답 시간이 단

Heap 영역을 이용 => 프로세스 간 통신 방법(IPC)에 비해 스레드 간의 통신 방법이 훨씬 간단

 

단점

서로 다른 스레드가 같은 데이터에 접근하고, 힙 영역을 공유하기 때문에

서로 다른 스레드가 서로 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정하는 일이 발생할 수 있다

 

단점 해결

멀티스레딩 환경에서는 동기화 작업이 필요합니다.

동기화를 통해 작업 처리 순서를 제어하고, 공유 자원에 대한 접근을 제어해야 함

 

 

* 동시성과 병렬성의 차이

동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 갯수로 제한됨

시분할 방식 => 운영체제(또는 가상 머신)는 각 스레드를 시간에 따라 분할하여, 여러 스레드가 일정 시간마다 돌아가면서 실행되도록 함

  • Concurrency(동시성, 병행성): 여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
  • Parallelism(병렬성): 멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행됨

 

가비지 컬렉션

가비지 컬렉션이란?

프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것 즉 자동 청소 자바, C#, (자바스크립트에서 사용가능)

 V8 엔진(크롬 브라우저 및 node.js)은 힙 메모리에 객체나 동적 데이터를 저장함

 

대표적인 방법

1) 트레이싱

한 객체에 flag를 두고, 가비지 컬렉션 사이클마다 flag에 표시 후 삭제하는 mark and sweep 방법

 

2) 레퍼런스 카운팅

 한 객체를 참조하는 변수의 수를 추적하는 방법

 

 

캐시

많은 시간이나 연산이 필요한 작업의 결과를 저장해두는 것

컴퓨팅에서) 일반적으로 일시적인(temporarily) 데이터를 저장하기 위한 목적으로 존재하는 고속의 데이터 저장공간

 

캐시의 일반적인 작동원리

 

캐시의 데이터는 일반적으로 RAM(Random Access Memory)과 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며,

소프트웨어 구성 요소와 함께 사용될 수도 있습니다. 캐시는 기본 스토리지 계층(SSD, HDD)에 액세스하여 데이터를

가져오는 더 느린 작업의 요구를 줄이고, 데이터 검색의 성능을 높입니다.

 

속도를 위해 용량을 절충하는 캐시는 일반적으로 데이터의 하위 집합을 일시적으로 저장합니다.

완전하고 영구적인 데이터가 있는 데이터베이스와는 대조적임 

 

CPU를 비유를 통해 설명

1. 사람의 뇌

CPU= 사고를 담당하는 대뇌피질

RAM=단기기억을 담당

HDD(하드디스크)=장기기억을 담당

2. 행동

CPU= 머릿속에 있는 기억을 떠올리는 행동

RAM=책장에 꽂혀 있는 책을 찾아 읽는 행동

HDD(하드디스크)=지구 한 바퀴를 돌아서 특정한 내용을 찾아오는 행동

CPU

CPU는 PC의 기억, 해석, 연산, 제어를 하며, 프로그램의 명령어를 해석하여 데이터를 연산 및 처리하고 실행함

RAM 요약.

CPU가 HDD에 빠르게 접근할 수 있도록 하기 위하여 운영체제(OS)와 응용프로그램, 현재 사용 중인 데이터를 유지하고 있는 저장 장소

 

출처 : https://m.blog.naver.com/hagagoo/221748077404

 

장점

  • 애플리케이션 성능 개선
  • 데이터베이스 비용 절감
  • 백엔드 부하 감소
  • 예측 가능한 성능
  • 데이터베이스 핫스팟 제거
  • 읽기 처리량 증가
    • 읽기 처리량: IOPS; Input/output operations per second. HDD, SSD 등의 컴퓨터 저장 장치의 성능 측정 단위

캐시 사용처

  • 클라이언트: HTTP 캐시 헤더, 브라우저
  • 네트워크: DNS 서버, HTTP 캐시 헤더, CDN, 리버스 프록시
  • 서버 및 데이터베이스: 키-값 데이터 스토어(e.g. Redis), 로컬 캐시(인-메모리, 디스크)

댓글