오늘은 운영체제에 대한 개념및 주요 기능을 한번 살펴보자.
아래는 사진은 컴퓨터 시스템 (컴퓨터) 를 구성하는 요소이다.
운영체제의 정의
- 운영체제: OS(Operating System)
- 하드웨어(H/W)를 제어하는 소프트웨어(S/W)
- H/W를 활용할 수 있는 펌웨어(Firmware)나 S/W
- H/W 자원을 가장 효율적으로 사용할 수 있도록 지원
- 자원(프로세서, 기억장치, 파일 및 정보, 네트워크 및 보안) 등을 관리
대표적 운영체제의 종류는 아래와 같다.
운영체제의 목적
- 컴퓨터 시스템의 처리량과 신뢰성 => 최대화
- 응용S/W의 반환 시간(Return Time), 응답 시간(Response Time), 대기 시간 (Waiting Time), 경과 시간(Duration) => 최소화 사용자와 컴퓨터 시스템과의 인터페이스(IF : Interface)
- 제한된 자원(CPU, 메모리 등)을 효율적으로 공유하기 위해 스케줄링
- 데이터 공유
- 주변장치 관리
- 시스템 이식성(호환성) 향상
운영체제의 역할
응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공 => 동작 환경 제공
H/W와 사용자 사이의 내/외부 인터페이스 제공
컴퓨터 자원을 여러 사용자가 효율적으로 나누어 사용할 수 있도록 자원을 관리 및 공유
프로세서, 프로세스(Task, Job), 기억장치(주/보조), 입출력 장치 관리
컴퓨터 초기화(부팅)후 작업(Job)이 수행될 수 있는 상태 유지
S/W 또는 H/W 오류 시 운영체제 회복 및 시스템 보호
응용 소프트웨어란?
응용 소프트웨어(application software)는 사용자가 컴퓨터를 사용하여 어떠한 일을 하려고 할 때 사용되는 모든 프로그램을 말한다. 예를 들어, 컴퓨터로 재고 관리를 하는 경우 이 재고 관리를 실행하는 프로그램이 응용 소프트웨어다. 응용 소프트웨어는 이런 점에서 컴퓨터를 작동시키는 운영 체제(OS)나 컴퓨터 시스템의 유지 관리를 지원하는 유틸리티 및 프로그램을 작성하는 언어와 구별된다. 응용 소프트웨어는 입력된 또는 저장된 데이터를 처리한다.
시스템 소프트웨어란?
- 응용 프로그램들을 지원하기 위한 소프트웨어
- 일반적으로 사용자보다는 하드웨어 위주
- 컴파일러, 링커, 로더, 매크로 프로세서, 탐색기 등의 유틸리티
- 운영체제도 해당
대표적인 시스템 소프트웨어들 개념과 중요 키워드 정리
어셈블러(Assembler) :
- 저급 언어(어셈블리 언어, Assembly Language)로 작성된 원시 프로그램을 목 적 프로그램(기계어 == 0 과 1로 구 성, Machine Language)로 변환
- 로더(Loader) 정보 추가
- 번역 방법에 따라 단일 패스 어셈블러(1-pass Assembler) 와 이중 패스 어셈블러(2-pass Assembler) 로 나뉨 일반적인 동작 방식은 이중 패스 어셈블러임 1 보다 좀더 프로그램 작성이 용이 하기 때문임 하지만 2번 실행해서 속도가 느림
매크로 프로세서(Macro Processor) : 어셈블리 언어를 사용하기 쉽도록 명령어들을 문자로 치환하여 확장
매크로란?쉬운 이해: C언어의 함수(단, 함수에서 함수 선언 가능형태로 외울것!!)
수행 기능
- 매크로 정의 인식 : 1.원시 프로그램 내에 존재하는 매크로를 파악 , 2.시작과 종료 위치를 파악(C언어 예: 함수의 시작과 끝 파악)
- 매크로 정의 저장 : 매크로 호출 시 확장하기 위해 저장
- 매크로 호출 인식 : 확장하기 위한 준비가 되어 있는지 확인
- 매크로 확장 및 인수 치환 : 매크로를 호출하면 매크로 명이 있는 원시 프로그램 위치에 저장된 내용과 인수를 치환
컴파일러(Compiler) : 고급 언어로 작성된 원시(object) 프로그램을 목적 프로그램으로 변환
- 고급 언어로 작성된 프로그램을 기계어로 번역
- 대표적 언어: Cobol, C/C++, Fortran, Pascal, Algol, Ada 등
- 기타: Java, C# 등도 컴파일 언어에 해당되나 기계어로 번역되는 게 아님 => 가상머신 이용 ex JVM
인터프리터(Interpreter) : • 고급 언어로 작성된 원시 프로그램을 실행하되 목적 프로그램은 만들지 않고 대화식으로 처리
- 명령어 해석기를 통해 명령문단위로 번역하여 처리
- 대표적 언어: JavaScript, Perl, PHP, ASP, Python 등
링커(Linker) : 두 개 이상의 목적 프로그램을 합쳐서 실행 가능한 프로그램으로 만듦
로더(Loader) : 프로그램을 실행을 위해 주기억장치로 적재
- 목적 프로그램을 실행 가능한 형태로 변환을 위해 주기억 장소를 할당 (allocation)
- 여러 개의 목적 프로그램을 CPU가 처리할 수 있도록 변환
- 동작 과정에서 연결(Linking) 및 기억 장소 재배치(re-allocation) 등이 수행
로더의 일반적 기능과 종류
참고 레퍼런스
https://velog.io/@gparkkii/systemsoftware
'자료구조, 운영체제, 네트워크, 시스템설계 > NCS' 카테고리의 다른 글
운영체제 기술면접 준비6: 가상 기억장치 구역성, 관리 전략, 교체 알고리즘 (0) | 2022.10.10 |
---|---|
운영체제 기술면접 준비5: 메모리(RAM) 관리, 가상 기억장치, 실 기억장치, 단편화, 페이징, 세그멘테이션 (0) | 2022.10.10 |
운영체제 기술면접 준비4: 임계구역, 교착상태 (0) | 2022.10.10 |
운영체제 기술면접 준비3: 스풀링, 버퍼링, 인터럽트, 문맥교환, 스케줄링 (0) | 2022.10.09 |
운영체제 기술면접 준비2: 운영체제의 발달 과정, 성능 평가 기준, 구성요소 , 프로세서와 프로세스 (0) | 2022.10.09 |