운영체제
프로그램과 실행 중인 작업 구분하기
프로그램 파일과 실행 중인 프로세스는 구분해야 합니다.
이럴 때 필요해요
브라우저에서 일이 실행되는 환경을 읽기 위한 기초 용어를 익힙니다.
어떻게 동작하나요?
프로그램은 실행할 명령이 담긴 코드이고 프로세스는 실행 중인 프로그램의 한 인스턴스입니다. 같은 프로그램을 여러 번 실행하면 서로 다른 프로세스가 만들어질 수 있습니다.
스레드는 프로세스 안에서 명령을 실행하는 흐름입니다. 여러 스레드가 있다는 것과 자원 충돌 없이 안전하게 작업한다는 것은 다른 문제입니다.
아래 문자열 배열은 용어를 구분해 읽는 설명용 예제일 뿐 운영체제 프로세스나 스레드를 생성하지 않습니다. 실제 브라우저의 프로세스 구조는 구현과 상황에 따라 달라질 수 있습니다.
코드 예제
동작을 설명하는 읽기 전용 예제입니다.
const terms = ["프로그램: 실행할 코드", "프로세스: 실행 중인 인스턴스", "스레드: 명령 실행 흐름"];
console.log(terms[1]);용어를 출력하는 예제이며 병렬 실행을 재현하는 코드는 아닙니다.
자주 헷갈리는 포인트
- 브라우저 탭 하나가 항상 운영체제 프로세스 하나라고 단정하지 않습니다.
- 스레드 수가 많다는 것과 더 빠르거나 안전하다는 것은 다릅니다.
내 말로 설명해 보기
같은 프로그램을 실행한 두 인스턴스를 무엇으로 구분할까요?
생각할 단서 코드 파일과 지금 실행 중인 작업, 그 안의 실행 흐름을 구분하세요.
예시 답변 확인
설명에 들어갈 핵심
- 프로그램 파일과 실행 중인 프로세스는 구분해야 합니다.
- 용어를 출력하는 예제이며 병렬 실행을 재현하는 코드는 아닙니다.
예시 답변
실행 중인 각 인스턴스는 별도 프로세스일 수 있습니다. 스레드는 그 안의 실행 흐름을 나타내며 실제 구조는 구현에 따라 확인해야 합니다.
문장을 그대로 외우기보다 예제의 값과 실행 흐름을 떠올리며 설명해 보세요.