[221118] 내배캠 5일차 - 프로세스, 쓰레드, 비동기

경진·2022년 11월 18일
0

내일배움캠프

목록 보기
5/10

1. 프로세스

1) 정의

  • 메모리에 적재되어 실행되고 있는 프로그램의 인스턴스
  • OS로부터 시스템 자원을 할당받은 작업의 단위
인스턴스
- 설계된 것을 바탕으로 구현된 구체적인 실체
- 붕어빵 틀(설계된 것, 클래스)과 붕어빵(인스턴스)이 보통 예시로 많이 사용됨


시스템 자원
- CPU 시간
- 실행되기 위해 필요한 독립된 메모리 영역

2) 특징

  • 프로세스는 독립된 메모리를 할당 받는다.
    • 프로세스가 메모리를 관리하기 위해 이 공간들을 어떤 구조로 관리하는데, 이를 프로세스 주소 공간이라고 부른다.
    • 프로세스 주소 공간은 Code, Data, Stack, Heap 으로 구성된다.
      • Code: 코드 자체를 구성하는 메모리 영역(프로그램 명령)
      • Data: 전역변수, 정적변수 등
      • Stack: 지역변수, 함수 매개변수, 리턴 값 (임시 메모리 영역)
      • Heap: 동적 할당 시 사용 (new(), malloc() 등)
  • 기본적으로 프로세스마다 최소 1개의 스레드(메인 스레드)를 갖는다.

2. 쓰레드

1) 정의

  • 프로세스 내에서 프로세스의 자원을 이용하는 여러 실행 흐름의 단위

2) 특징

  • 스레드는 프로세스 내의 Code, Data, Heap 영역은 다른 스레드와 공유하고 Stack 영역을 따로 할당받는다.
  • 프로세스와 해당 프로세스 내의 다른 스레드와 자원과 공간을 공유하면서 사용

3. 동기/비동기

1) 정의

  • 동기 : 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 리턴값을 계속 확인하면서 신경 쓰는것
  • 비동기 : 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 작업 완료 여부는 신경 쓰지 않는 것
function cureDisease(human, medicine)  // 인자로 받은 medicine으로 human을 치료한다.
function getMedicine()  // 치료에 필요한 medicine을 리턴한다.

// 동기
const human = new Human()
const medicine = getMedicine()
cureDisease(human, medicine)

// 비동기
const human = new Human()
getMedicine({
  params: { human,medicine },
  success: function (medicine) {
    cureDisease(human, medicine)
  }
})

4. 느낀 점

  • 지금까지 마크업언어만 하다보니 CS에 대한 지식이 많이 부족했음을 느꼈고, 전공자에 뒤지지 않게 꾸준히 공부하여 풀스택 개발자를 목표로 마음을 다잡는 계기가 되었다.
profile
항상 처음 세웠던 목표 처럼

0개의 댓글