Coffee Chat Brewing AI Knowledge

eng kor

[정처기 요점정리] 응용 소프트웨어 기술 1

운영체제 (OS; Operating System)

컴퓨터 시스템의 자원을 효율적으로 관리하고, 컴퓨터 사용을 편리하고 효과적으로 사용할 수 있는 환경을 제공하는 프로그램의 모임

  • 컴퓨터 사용자와 하드웨어 간 인터페이스로 동작하는 시스템 소프트웨어의 일종
  • 컴퓨터 자원 관리: 프로세서, 기억장치 , 입출력장치, 파일, 정보 등
  • 운영체제의 목적:
    • 처리 능력 (Throughput): 일정 시간 내 처리하는 일의 양
    • 반환 시간 (Turn Around Time): 작업 의뢰부터 처리 완료까지 걸린 시간
    • 사용 가능도 (Availability): 필요할 때 즉시 사용 가능한 정도
    • 신뢰도 (Reliability): 문제를 정확하게 해결하는 정도

UNIX

1960년대, AT&T 벨 연구소, MIT, General Eletric이 공동 개발한 운영체제

  • 시분할 시스템 (Time sharing system)을 위해 설계됨. 대화식 운영체제
  • 대부분 C로 작성: 이식성 및 장치/프로세스 간 호환성 높음
  • 트리 구조의 파일 시스템
  • 시스템 구성:
    • 커널 (Kernel): 핵심 부분. 하드웨어 보호 및 프로그램과 하드웨어 간 인터페이스 역할.
      • 여러가지 기능 수행: CPU 스케줄링, 기억장치, 파일, 입출력 등 관리 및 프로세스 간 통신, 데이터 전송
    • 쉘 (Shell): 명령어 해석기. 사용자 명령을 인식하고 수행. 시스템과 사용자 간 인터페이스 역할.

LINUX

1991년 리누스 토발즈 (Linus Torvalds)가 UNIX를 기반으로 개발한 운영체제

  • 소스 코드가 무료로 공개됨
  • 대부분의 특징이 UNIX와 동일

Andriod

구글에서 개발한 LINUX 커널 기반의 개방형 모바일 운영체제

  • 모든 코드가 공개된 개방형 소프트웨어
  • Java와 Cotlin으로 애플리케이션 작성

기억장치 관리

반입 (Fetch)

보조기억장치에 보관 중인 프로그램/데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략

  • 요구 반입 (Demand fetch): 실행 중인 프로그램이 특정 프로그램/데이터의 참조를 요구할 때 적재하는 방법
  • 예상 반입 (Anticipatory fetch): 실행 중인 프로그램에 의해 참조될 프로그램/데이터를 예상하여 적재하는 방법

배치 (Placement)

새로 반입되는 프로그램/데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략

  • 최초 적합 (First fit): 적합한 크기의 빈 영역 중 첫 번째 분할 영역에 배치하는 방법
  • 최적 적합 (Best fit): 적합한 크기의 빈 영역 중 단편화를 가장 작게 남기는 분할 영역에 배치하는 방법
  • 최악 적합 (Worst fit): 적합한 크기의 빈 영역 중 단편화를 가장 많이 남기는 분할 영역에 배치하는 방법

가상기억장치 (Virtual Memory)

보조기억장치의 일부를 주기억장치처럼 사용하는 것. 주기억장치는 용량이 작은데, 마치 큰 용량인 것처럼 사용하는 기법.

  • 원리: 프로그램을 블록으로 나누어서 가상기억장치에 보관, 프로그램 실행 시 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리함.

구현 방법

  • 페이징 (Paging): 가상기억장치 내 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치에 적재시키는 방법
    • 페이지 (Page): 프로그램을 일정한 크기로 나눈 단위
    • 페이지 프레임 (Page frame): 페이지 크기로 일정하게 나눠진 주기억장치의 단위
  • 세그멘테이션 (Segmentation): 가상기억장치 내 프로그램을 다양한 크기의 논리적 단위로 나눈 후 주기억장치에 적재시키는 방법
    • 세그먼트 (Segment): 프로그램을 논리적 크기 (배열, 함수 등)로 나눈 단위. 각 세그먼트는 고유한 이름과 크기를 가짐.

페이지 교체 알고리즘

페이지 부재 (Page fault) 발생 시 어떤 페이지 프레임을 선택하여 교체할 것인지 결정하는 기법: 페이지 부재가 발생하면 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 주기억장치의 모든 페이지 프레임이 사용 중인 경우가 있다.

  • OPTimal replacment (OPT; 최적 교체): 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법.
    • Belady가 제안했음. 페이지 부재가 가장 적게 발생하는 효율적 방법.
  • FIFO (First In First Out): 가장 오래 있었던 페이지를 교체하는 기법.
    • 각 페이지가 주기억장치에 적재된 시각을 기억해야 함.
  • LRU (Least Recently Used): 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법.
  • LFU (Least Frequently Used): 사용빈도가 가장 적은 페이지를 교체하는 기법.

구역성 (Locality)

프로세스가 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론. 스레싱 (Thrashing) 방지를 위한 워킹 셋 (Working set) 이론의 기반이 되었음.

  • 시간 구역성 (Temporla locality): 프로세스가 한 페이지를 일정 시간 동안 집중적으로 액세스하는 현상.
  • 공간 구역성 (Spatial locality): 프로세스가 일정 위치의 페이지를 집중적으로 액세스하는 현상.

워킹 셋 (Working Set)

프로세스가 일정 시간 동안 자주 참조하는 페이지의 집합. 자주 참조되는 워킹 셋을 주기억장치에 상주시키면 페이지 부재 및 페이지 교체 수가 줄어들어 프로세스의 기억장치 사용이 안정됨.

스래싱 (Thrashing)

프로세스 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상.

  • 다중 프로그래밍 시스템이나 가상기억장치 사용 시스템에서 프로세스 하나를 수행하는 중 페이지 부재가 자주 발생함. 이것으로 시스템 성능이 저하됨.


프로세스 (Process)

“실행 중인 프로그램”. 다양한 정의:

  • 프로시저가 활동 중인 것.
  • 프로세서에 의해 처리되는 프로그램. 프로세서가 할당되는 실체. 디스패치(dispatch)가 가능한 단위.
  • 실기억장치에 저장된 프로그램.
  • 비동기적 행위를 일으키는 주체.
  • 운영체제가 관리하는 실행 단위. PCB를 가진 프로그램.
    • PCB (Process control block; 프로세스 제어 블록): 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
    • PCB에 저장된 정보: 프로세스의 현 상태, 포인터, 프로세스 고유 식별자, CPU 레지스터 정보, 주기억장치 관리 정보, 입출력 상태, 계정 정보

프로세스 상태 전이

프로세스가 시스템 내 존재하는 동안 상태가 변하는 것.

state

  • 디스패치 (Dispatch): 준비 (Ready) 상태인 프로세스가 프로세서를 할당받아 실행 (Run) 상태로 전이되는 과정 (Ready → Run)
  • Wake Up: 입출력이 완료되어 대기 (Wait/Block) 상태인 프로세스가 준비 (Ready) 상태로 전이되는 과정 (Wait/Block → Ready)
  • 스풀링 (Spooling): 입출력할 데이터를 직접 입출력 장치에 보내지 않고 이후 한 번에 입출력하기 위해 디스크에 저장하는 과정
    • 효과: 입출력장치 공유, 입출력 속도 보완, 다중 프로그래밍 시스템 성능 향상

스레드 (Thread)

시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위. 프로세스 내에서의 작업 단위. 프로세스의 일부 특성을 갖고 있어 경량 프로세스 (Light weight process)라고도 함.

스케줄링 (Scheduling)

프로세스가 생성되어 실행될 때 필요한 시스템의 자원을 해당 프로세스에 할당하는 작업.

비선점 (Non-preemptive) 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 뺏을 수 없는 스케줄링 기법. 일괄 처리 방식에 적합.

  • FCFS (First Come First Service; 선입 선출=FIFO): 준비 상태 큐에 도착한 순서에 따라 차례로 CPU를 할당하는 기법.
  • SJF (Shortest Job First; 단기 작업 우선): 준비 상태 큐 내 프로세스 중 실행시간이 가장 짧은 프로세스에 CPU를 먼저 할당하는 기법.
    • 가장 적은 평균 대기 시간을 제공하는 최적 알고리즘.
  • HRN (Highest Response-ratio Next): 대기 시간과 서비스(실행) 시간을 통해 우선순위를 계산하여, 우선순위가 높은 것부터 스케줄링하는 기법.
    • 우선순위 = (대기 시간 + 서비스 시간) / 서비스 시간

선점 (Preemptive) 스케줄링

우선순위가 높은 프로세스가 이미 할당된 CPU를 빼앗아 사용할 수 있는 스케줄링 기법. 빠른 응답시간이 요구되는 대화식 시분할 시스템에 적합.

  • 종류: RR, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등
  • RR (Round Robin): 각 프로세스를 시간 할당량 (time slice, quantum) 동안만 실행한 후, 실행이 완료되지 않으면 다음 프로세스에 CPU를 넘겨주는 기법.
    • 시분할 시스템 (time sharing system)을 위해 고안된 방식. 할당 시간이 작으면 작은 프로세스에게 유리.
    • 할당 시간이 큰 경우 FCFS와 같아지고, 할당 시간이 작으면 문맥 교환 및 오버헤드가 자주 발생하여 신속한 작업 처리가 불가함.
  • SRT (Shortest Remaining Time): 현재 실행 중인 프로세스의 남은 시간과 준비 상태 큐에 새로 도착한 프로세스의 실행 시간을 ㅣㅂ교하여, 가장 짧은 시간을 요구하는 프로세스에게 CPU를 넘기는 기법.
    • (+) 시분할 시스템에 유용. (-) 준비 상태 큐 내 프로세스의 실행 시간을 추적 보유해야 하므로 오버헤드가 증가함.


환경 변수와 OS 명령어

환경 변수 (Environment Variable)

시스템 소프트웨어의 동작에 영향을 미치는 동적인 값의 모임. 변수명과 값으로 구성됨.

  • Windows의 set, UNIX/LINUX의 set, env, printenv, setenv 를 입력하면 모든 환경변수와 값을 출력함.

Windows 기본 명령어

  • dir 현재 디렉터리 파일 목록 표시 / cd 동일 드라이브 내에서 디렉터리의 위치를 변경 / md 디렉터리 생성
  • copy 파일 복사 / del 파일 삭제 / ren 파일 이름 변경 / type 파일 내용 표시 / move 파일 이동
  • cls 화면 내용 삭제
  • attrib 파일 속성 변경 / find 파일에서 문자열을 찾음
  • chkdsk 디스크 상태 점검 / format 디스크 표면을 트랙과 섹터로 나누어 초기화

UNIX/LINUX 기본 명령어

  • cat 파일 내용 표시
파일 내용 표시 cat type