셸(Shell)은 사용자와 시스템 사이의 인터페이스를 담당하는 명령어 해석기다. 사용자가 입력한 명령어를 해석해 커널에 전달하고 실행을 요청한다. 유닉스에서 도스의 command.com과 같은 역할을 하는 것이 셸이다.
셸과 커널의 역할은 나누어 기억한다. 셸은 명령 해석과 환경 설정을 담당하고, 프로세스 관리와 메모리 관리, 시스템 자원 관리는 커널의 고유 기능이다. 따라서 '셸이 프로세스와 메모리를 관리한다'는 설명은 틀린 선지가 된다.
한 프로세스의 출력을 다른 프로세스의 입력으로 넘겨 순차적으로 처리하는 것을 파이프라인이라고 한다. 표준 출력과 표준 입력을 연결해 여러 명령을 이어 붙이는 방식이다.
bash 셸 스크립트의 제어문은 if, for, while 같은 기본 키워드로 이루어진다. 'repeat_do'처럼 목록에 없는 이름은 가짜 키워드로 걸러 낸다. 환경 변수도 함께 다룬다. export는 환경 변수를 자식 프로세스에 전달하는 역할이고, 변수 값을 화면에 출력하는 명령은 echo다. 환경 변수를 출력하는 명령으로는 printenv, env, setenv가 있고, configenv는 그런 명령이 아니다.
예제
선지 판단은 셸을 명령어 해석기이자 사용자 인터페이스로 읽는지, 프로세스·메모리 관리를 커널의 기능으로 돌리는지, 출력을 다음 프로세스의 입력으로 넘기는 것을 파이프라인으로 보는지, bash 제어문에 없는 repeat_do를 가려내는지, export를 자식 프로세스로의 환경 변수 전달로 이해하는지에서 갈린다.
대표 기출 3문항
운영체제를 기능에 따라 분류할 경우 제어 프로그램이 아닌 것은?
데이터 관리 프로그램
서비스 프로그램
작업 제어 프로그램
감시 프로그램
정답과 해설 보기
정답 ② · 운영체제는 크게 제어 프로그램과 처리 프로그램으로 나뉩니다. 제어 프로그램에는 감시 프로그램(Supervisor), 작업 제어 프로그램(Job Control), 데이터 관리 프로그램(Data Management)이 속합니다.
운영체제 기능 분류에서 서비스 프로그램은 처리 프로그램에 속하므로 ②가 제어 프로그램이 아니다.
프로세스 적재 정책과 관련한 설명으로 틀린 것은?
반복, 스택, 부프로그램은 시간 지역성(Temporal Locality)과 관련이 있다.
공간 지역성(Spatial Locality)은 프로세스가 어떤 페이지를 참조했다면 이후 가상주소공간상 그 페이지와 인접한 페이지들을 참조할 가능성이 높음을 의미한다.
일반적으로 페이지 교환에 보내는 시간보다 프로세스 수행에 보내는 시간이 더 크면 스레싱(Thrashing)이 발생한다.
스레싱(Thrashing) 현상을 방지하기 위해서는 각 프로세스가 필요로 하는 프레임을 제공할 수 있어야 한다.
정답과 해설 보기
정답 ③ · 프로세스 적재 정책과 스레싱 발생 조건에 대한 설명 중 틀린 것을 찾는 문제이다. 스레싱은 페이지 교환에 소요되는 시간이 프로세스 수행 시간보다 커질 때, 즉 페이지 부재가 과다하여 실질적인 작업이 거의 이루어지지 못할 때 발생한다.
프로세스 적재 정책과 스레싱 발생 원인을 정확히 구분하여 오답을 찾는다.
프로세스와 관련한 설명으로 틀린 것은?
프로세스가 준비 상태에서 프로세서가 배당되어 실행 상태로 변화하는 것을 디스패치(Dispatch)라고 한다.
프로세스 제어 블록(PCB, Process Control Block)은 프로세스 식별자, 프로세스 상태 등의 정보로 구성된다.
이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 과정을 문맥 교환(Context Switching)이라고 한다.
프로세스는 스레드(Thread) 내에서 실행되는 흐름의 단위이며, 스레드와 달리 주소 공간에 실행 스택(Stack)이 없다.
정답과 해설 보기
정답 ④ · 프로세스에 대한 설명 중 틀린 것을 고르는 문제이다. 스레드는 프로세스 안에서 실행되는 흐름의 단위이지 그 반대가 아니며, 프로세스는 독립적인 주소 공간과 자신만의 실행 스택을 보유하므로 4번이 틀린 설명이다.