TIL_운영체제/가비지컬렉션

해달·2021년 9월 10일
0

TIL

목록 보기
49/80
post-thumbnail

Today

  • 운영체제
  • 프로세스, 스레드, 멀티 스레드
  • 가비지 컬렉션

운영체제

시스템 자원 관리

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

응용 프로그램 관리

  • 응용 프로그램이 실행되고, 시스템 자원을 사용할 수 있도록 권한과 사용자를 관리합니다.

응용프로그램

  • 운영체제를 통해 컴퓨터에게 일을 시키는 것
  • 운영체제가 응용 프로그램을 위해 인터페이스(API)를 제공해야 하며
    응용 프로그램이 시스템 자원을 사용할 수 있도록, 운영체제 차원에서 다양한 함수를 제공하는 것을 시스템 콜(System call)이라고 한다

프로세스

  • 실행 중인 하나의 애플리케이션을 프로세스라고 부른다
  • 하나의 프로그램이 여러 프로세스를 가질 수 있다
  • 프로세스는 싱글 스레드 또는 멀티 스레드로 작동할 수 있다
  • 프로세스는 프로그램이 메모리에 적재되어 운영체제로부터 필요한 공간, 파일, 메모리를 할당받는다
  • node.js의 Event loop는 싱글 스레드로 작동되지만, Worker pool은 멀티 스레드로 작동된다
  • 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.

생각해보니 윈도우 쓸 당시에 작업관리자에서 맨날 프로세스 종료를 눌렀었는데
한개의 무언가가 실행되면 프로세스가 활성화되었던것이다

스레드

  • 프로세스 내에서 실행되는 흐름의 단위를 의미한다
  • 스레드는 다른 스레드와 독립적으로 작동한다
  • 싱글코어에서 동시에 돌릴 수 있는 스레드 수는 한개 뿐이다
  • 각 스레드마다 call stack이 존재(call stack: 실행중인 서브루틴을 저장하는 자료 구조)

멀티 스레드

  • 멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면, 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라고 할 수 있다
  • 대용량 데이터의 처리시간을 줄이기 위해 데이터를 분할하여 병렬로 처리하는 데에 사용할 수 있다
  • UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해 사용할 수 있다
  • 여러 클라이언트의 요청을 처리하는 서버를 개발할 때에도 사용할 수 있다


멀티 스레딩의 장점

  • 메모리 공간과 시스템 자원의 소모가 줄어든다
  • 스레드 간의 통신이 필요한 경우에 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap 영역을 이용하기 때문에, 프로세스 간 통신 방법(IPC)에 비해 스레드 간의 통신 방법이 훨씬 간단하다
  • 프로그램의 응답 시간이 단축된다

멀티 스레딩의 문제점

  • 서로 다른 스레드가 같은 데이터에 접근하고, 힙 영역을 공유하기 때문에 서로 다른 스레드가 서로 사용중인 변수나 자료구조에 접근하여 엉뚱한 값을 읽어오거나 수정하는 일이 발생할 수 있다
    • 멀티스레딩 환경에서는 동기화 작업이 필요합니다. 동기화를 통해 작업 처리 순서를 제어하고, 공유 자원에 대한 접근을 제어해야 한다
  • 데드락(Deadlock, 교착 상태)
  • 뮤텍스(Mutex), 세마포어(Semaphore)

동시성과 병렬성의 차이

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

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

  • Concurrency(동시성, 병행성)
    여러 개의 스레드가 시분할 방식으로 동시에 수행되는 것처럼 착각을 불러일으킴

  • Parallelism(병렬성)
    멀티 코어 환경에서 여러 개의 스레드가 실제로 동시에 수행됨


메모리

  • 메모리 주소는 16진법으로 표현한다
  • 32비트 운영체제에서는 최대 4GB만을 사용할 수 있다
  • 메모리는 하드디스크보다 읽기/쓰기 속도가 빠르다
  • 32비트 운영체제와 64비트의 운영체제의 포인터 크기는 다르다.

가비지 컬렉션

  • 가비지 컬렉션은 프로그램에서 더이상 쓰지 않는 메모리를 찾아서 회수하는 기능이다
  • C#, 자바, 자바스크립트(v8) 등 가비지 컬렉터가 내장되어 있다
  • 가비지 컬렉션의 방법으로는 트레이싱, 레퍼런스 카운팅 등의 방법이 있다
  • 가비지 컬렉션은 개발자가 직접 메모리를 다룰 때에 생길 수 있는 메모리 누수를 방지할 수 있다

마치며,

컴퓨터공학의 기초내용을 챕터로 공부하면서 평소에 많이보던 단어도 있었고 처음보는 단어들도 많았다
공부하면서 가끔씩 보였던 가비지컬렉션에 대해 알게 되었고, 컴퓨터내의 작동원리는 역시나 복잡하지만 이론을 잘 알고 있어야 컴퓨터가 전달받는 내용들을 어떻게 이해하고 작동하는지 쉽게 접근할 수 있을거 같다.
챕터로만은 이론이 조금 부족하여 따로 추가적으로 자료를 찾아보면서 공부를 해야 할 것 같다.

0개의 댓글