✍️ TILog_10

은유로그·2021년 10월 25일
0

🔥 Log

목록 보기
12/29

운영체제(OS)


운영체제

  • 하드웨어를 구성하는 일을 하는 CPU, 자료를 저장하는 RAM, 디스크 등의 시스템 자원을 관리하는 주체
  • 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어
  • 사용자가 컴퓨터를 쉽게 다룰 수 있게 해주는 인터페이스
  • 하드웨어와 소프트웨어를 관리하는 소프트웨어 전체

운영체제가 하는 일

  • 시스템 자원 관리
  • 응용 프로그램 관리

시스템 자원 관리


운영체제가 없다면 응용 프로그램은 실행할 수 없다.

  • 프로세스 관리
  • 메모리 관리
  • 입출력 관리(디스크, 네트워크 등)

응용 프로그램 관리

  • 응용 프로그램은 권한에 대한 관리가 필요하다. 또한 여러 사람이 하나의 기기를 사용하는 경우에는 사용자를 관리하는 일도 매우 중요하다.
  • 응용 프로그램이 실행되고, 시스템 자원을 사용할 수 있도록 권한과 사용자를 관리한다.

응용 프로그램

  • 응용 프로그램은 운영체제로부터 권한을 받고 제공하는 기능을 이용한다.
  • 운용체제가 응용 프로그램을 위해 인터페이스(API)를 제공해 소통한다.
  • 시스템 자원을 이용할 수 있도록 다양한 함수를 제공하는 것을 시스템 콜(system call)이라고 부른다.

프로세스

  • 운영체제에서는 실행 중인 하나의 애플리케이션
  • 사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 받아 애플리케이션의 코드를 실행한다.
    이때 실행되는 애플리케이션을 프로세스라고 부른다.

스레드

  • 하나의 스레드는 코드가 실행되는 하나의 흐름이기 때문에, 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미

스레드의 특징

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

멀티 스레드

  • 멀티 스레드를 통해 멀티 태스킹이 가능하다.
    멀티 태스킹은 두 가지 이상의 작업을 동시에 처리하는 것을 의미한다.
  • 대용량 데이터의 처리시간을 줄이기 위해 데이터를 분할하여 병렬로 처리하는 데에 사용할 수도 있고, UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해 사용할 수도 있다. 그리고 여러 클라이언트의 요청을 처리하는 서버를 개발할 때에도 사용된다.

멀티 스레드의 장단점

장점

  • 메모리 공간과 시스템 자원의 소모가 줄어든다.
  • 전역 변수의 공간 또는 동적으로 할당된 공간인 힙(Head) 영역을 이용해 - 스레드 간의 통신을 하기 때문에 프로세스 간 통신방법에 비해 훨씬 간단하다.
  • 시스템의 처리량이 향상되어 프로그램 응답 시간이 단축된다.

단점

  • 힙 영역을 공유하기 때문에 서로 다른 스레드가 같은 데이터에 접근해 사용중인 변수나 자료구조에서 엉뚱한 값을 읽어오거나 수정하는 일이 발생할 수 있다.
  • 작업 처리 순서를 제어하고, 공유 자원에 대한 접근을 제어하는 동기화 작업이 필요하다.

동시성과 병렬성의 차이

  • 동시에 돌릴 수 있는 스레드 수는 컴퓨터에 있는 코어 갯수로 제한된다. 운영체제(또는 가상 머신)는 각 스레드를 시간에 따라 분할하여, 여러 스레드가 일정 시간마다 돌아가면서 실행한다. 이런 방식을 시분할이라고 부른다.
    - Concurrency(동시성, 병행성): 여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴
    - Parallelism(병렬성): 멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행됨

가비지 컬렉션

  • 프로그램에서 더 이상 사용하지 않는 메모리를 자동으로 정리하는 것이다.
  • 이 기능을 가진 언어(혹은 엔진)는 자바, C#, 자바스크립트 등이 있다.
  • 대표적인 방법 : 트레이싱, 레퍼런스 카운팅

캐시

  • 많은 시간이나 연산이 필요한 작업의 결과를 저장해두는 것을 의미한다.
  • 일반적으로 RAM(Random Access Memory)과 같이 빠르게 액세스할 수 있는 하드웨어에 저장되며, 소프트웨어 구성 요소와 함께 사용한다.
  • 기본 스토리지 계층(SSD, HDD)에 액세스하여 데이터를 가져오는 더 느린 작업의 요구를 줄이고, 데이터 검색의 성능을 높인다.
  • 속도를 위해 용량을 절충하는 캐시는 일반적으로 데이터의 하위 집합을 일시적으로 저장한다.

캐시 장점

  • 애플리케이션 성능 개선
  • 데이터베이스 비용 절감
  • 백엔드 부하 감소
  • 예측 가능한 성능
  • 데이터베이스 핫스팟 제거
  • 읽기 처리량 증가
profile
๑•‿•๑

0개의 댓글