[TIL] CS기초 - 운영체제, 프로세스, 스레드, 캐시

Alex J. Lee·2021년 11월 26일
0

TIL

목록 보기
58/58

Today I Learned

운영체제

  • 최초의 컴퓨터에는 운영체제(OS)가 없었다 (OS없이도 컴퓨터 운영 가능). OS는 일반 사용자들이 컴퓨터를 사용하기에 편리하도록 만들어진 소프트웨어로 하드웨어를 운영해주는 시스템이다.
  • OS는 하드웨어 기능을 관리하며 동시에 응용프로그램을 위한 환경을 제공한다.
  • OS는 실행되는 응용 프로그램들이 메모리와 CPU, 입출력 장치 등의 자원들을 사용할 수 있도록 만들어 준다.
  • 응용프로그램은 OS로부터 컴퓨터 조작을 위한 권한을 받아 OS가 제공하는 기능을 이용할 수 있다.
  • 하드웨어 <-> OS <-> 응용프로그램 <-> 사용자

JS코드는 응용 프로그램일까?

  • JS코드는 운영체제가 아닌 웹 브라우저라는 응용 프로그램 위에서 동작한다. 즉, 응용 프로그램이 아니다. 운영체제는 신경 쓸 필요 없이 동작할 웹 브라우저만 고려하면 된다.
  • Node.js의 경우는 다르다. 이는 응용 프로그램이라고 볼 수 있다. Node.js의 JS코드가 V8엔진을 실행시키고 V8엔진은 운영체제 위에서 동작한다.
  • 따라서 일반 JS 코드를 작성할 때와 Node.js 코드를 작성할 때의 고려사항이 다르다. (동작 환경이 웹 브라우저인가 OS인가)

프로세스와 스레드

  • OS 상에서 응용 프로그램이 실행되려면 일정 공간(메모리)이 필요하다. OS는 프로세스 단위로 프로그램에 공간을 제공한다.
  • 스레드는 프로세스 안에서 코드가 실행되는 흐름으로 프로세스가 공장이라면 스레드는 그 안에서 돌아가는 각각의 컨베이어벨트라고 할 수 있다.
  • 스레드는 한 번에 한 가지 일밖에 하지 못한다.
  • 프로세스가 여럿이라면 멀티 프로세스, 스레드가 여럿이면 멀티 스레드라고 불린다.
  • 멀티스레드는 동시에 여러 일을 처리할 수 있기 때문에 싱글 스레드보다 빠르다. 하지만 개발자가 업무 배분을 관리해 주어야 하며 버그가 발생할 지점이 늘어난다. 스레드가 3개 이상이 되면 관리하기 복잡해지기 때문에 보통 3개를 한계라고 본다.

비동기

  • 멀티 스레드의 문제를 해결하기 위해 등장한 개념
  • 스레드에 업무 분배, 결과 수집 등의 과정을 비동기 시스템으로 자동화할 수 있다.
  • 개발자가 싱글 스레드로 개발하면 자동으로 멀티 스레드로 돌려주는 것으로 생각할 수 있다.
  • 자바스크립트는 기본적으로는 하나의 호출 스택만 존재하며 이 스택에서 업무는 순차적으로 실행된다. 이벤트 루프의 백그라운드 위에는 여러 워크 스레드가 존재하며 각각의 작업들을 동시에 실행한다. 하지만 개발자가 스레드를 생성/관리하는 것이 아니라 V8이 자동으로 처리하는 것이기 때문에 싱글 스레드라고 하는 것이다.
profile
🦄✨글 잘 쓰는 개발자가 되기 위해 꾸준히 기록합니다 ✨🦄

0개의 댓글