소프트웨어
- 하드웨어에 해당하는 컴퓨터 기계장치에 상반되는 개념의 프로그램
- 컴퓨터나 관련 장치들을 동작시키는데 사용되는 여러 가지 종류의 프로그램
펌웨어: ROM에 기록되어 변경할 필요가 없이 하드웨어처럼 사용
소프트웨어의 역할
컴퓨터가 각각의 업무를 수행하고 사용자와의 상호작용을 통하여 자료를 잘 처리할 수 있도록 하는 역할을 수행
사용 목적에 따른 소프트웨어 분류
- 시스템 소프트웨어: 프로그램 작성자와 사용자가 컴퓨터 시스템을 보다 잘 이용하도록 보조하면서 기본적인 운영을 담당
- 응용 소프트웨어: 사용자의 관점에서 작읍을 수행하고 제기된 문제를 해결
명령문과 프로그램
- 명령문: 컴퓨터의 처리 절차와 순서를 의미
- 프로그램: 컴퓨터가 이해하고 처리할 수 있는 언어로 기술하는 것
- 프로그램이 주어지면 프로그램에 기술된 명령대로 작업을 수행
- 만약 명령이 잘못되어 있으면 잘못된 대로 처리됨
컴퓨터 소프트웨어
개인용 소프트웨어, 그룹웨어, 미들웨어로 분류
개인용 소프트웨어
- 대부분의 소프트웨어가 해당
- 개별적 업무를 처리하기 위한 소프트웨어
그룹웨어
- 개인용 소프트웨어와 반대되는 개념
- 기업이나 기관, 단체의 구성원들이 컴퓨터로 연결된 작업장에서 서로 협력하여 업무 효율을 높이기 위해 스케쥴 관리 및 문서를 상호 공유
- 그룹 간 통신을 통해 협조적인 작업을 지원하는 응용 소프트웨어
미들웨어
- 각기 분리된 두 개의 프로그램 사이에서, 매개 역할을 하거나 연결시켜주는 프로그램
- 분산 컴퓨팅 환경에서 서로 다른 기종 간의 서버와 클라이언트들을 연결
시스템 소프트웨어
프로그래머에게 하드웨어, 소프트웨어, 저장 데이터를 제어 관리할 수 있는 편리한 기능을 제공하여 컴퓨터의 효율적인 기능을 수행하도록 필요한 모든 작업을 수행
운영체제
컴퓨터의 모든 운영을 관리하여 기본적인 동작이 원활하게 이루어지도록 하기 위한 대표적인 시스템 소프트웨어
목적
- 컴퓨터 하드웨어와 응용 프로그램 간의 인터페이스 역할
- 중앙처리장치, 주기억장치, 입출력장치 등의 컴퓨터 자원 관리
- 사용자에게 편의를 제공하면서 컴퓨터 시스템의 성능을 향상시킴
기능
- 사용자와 컴퓨터 간의 상호작용 제공
- 컴퓨터의 동작을 구동하고 프로그램의 실행 제어
- 데이터와 파일의 저장 관리
제어 프로그램
- 시스템 전체의 움직임을 항상 감시하는 프로그램
- 감시 프로그램, 데이터 관리 프로그램, 작업 관리 프로그램
처리 프로그램
- 제어 프로그램의 감시 하에 특정 문제 해결을 위한 자료를 처리하는 프로그램
- 언어 번역 프로그램, 서비스 프로그램, 사용자 문제 처리 프로그램
사용자 인터페이스 제공
- 운영체제의 많은 기능들은 컴퓨터의 화면에는 나타나지 않으며 사용자가 보는 것은 사용자 인터페이스
- 운영체제와 사용자와의 연결을 위해 사용자가 제어할 수 있는 부분으로, 이를 통해 운영체제와 통신이나 상호 대화가 가능
- 명령어 방식 인터페이스(CLI), 메뉴 방식 인터페이스(MDI), 그래픽 사용자 인터페이스(GUI)로 구분
CLI: 코드나 단어를 키보드로 명령어 입력을 요구, DOS, 리눅스, 유닉스 등
MDI: 커서를 움직이는 키를 이용하여 메뉴로부터 명령어를 선택
GUI: 가장 편리한 사용자 인터페이스, 아이콘 형태를 이용, 키보드 이외 마우스와 같은 장치를 이용하여 조작 가능
저장 공간의 관리
- 프로그램과 데이터가 저장되어 있는 메인 메모리와 보조기억장치를 항상 감시
- 데이터 및 프로그램의 일부를 메인 메모리와 하드디스크와 같은 보조 저장 장치 상호 간에 교환
파일 관리
- 하드디스크와 다른 보조 기억 장치의 여러 곳에 위치하고 있는 데이터 및 프로그램 파일을 찾을 수 있게 함
- 파일 이동, 새로운 이름으로 변경 및 삭제 시 변경 사항을 관리하여 해당 파일의 탐색 및 접근을 도와줌
기본 입출력 관리
- 주변장치에서 제공되는 데이터나 주변장치로 이동되는 데이터를 호출
- 컴퓨터에 들어오거나 나가는 모든 데이터와 입출력 장치 제어
시스템 자원 할당
- CPU는 시간, 메모리 공간, 파일 기억 장치, 입출력 장치 등을 가지고 있으며, 운영체제는 특정 프로그램과 사용자의 작업을 위해 필요한 자원을 할당
프로세스 관리
다중 태스킹
- 한 사용자를 위해 하나 이상의 프로그램을 동시에 실행 시킬 수 있는 환경
- 프로세서가 각 프로그램의 명령어들을 한 번에 한 프로그램씩 미리 정해진 시간만큼만 수행시키도록 함
- 프로세서의 속도는 빨라서 모든 프로그램이 동시에 실행되는 것처럼 보임
다중 프로그래밍
- 다수의 사용자를 위해 여러 사용자들의 프로그램을 병렬로 실행
- 다중 태스킹과 같이 CPU는 일정 시간을 각 사용자의 프로그램을 실행시키는데 사용
- 처리 속도가 빨라 모든 프로그램이 동시에 실행되는 것처럼 보임
시분할
- 다수의 사용자를 위해 여러 사용자의 프로그램을 한 번에 하나씩 돌아가면서 실행
- 여러 사용자가 통신 네트워크를 통해 한 대의 컴퓨터에 접속되어 있을 경우에 사용
- 컴퓨터는 먼저 한 사용자의 태스크를 몇 분의 일초 동안 처리한 다음, 다음 사용자의 태스크로 진행하기를 되풀이
다중 처리
- 단일 또는 다수의 사용자를 위해 두 개 이상의 프로그램을 다수의 컴퓨터로 동시에 처리
- 동시에 작업을 수행하도록 두 대 이상의 컴퓨터 또는 프로세서가 연결
- 각각의 프로세서 또는 컴퓨터는 다른 프로그램의 명령어나 같은 프로그램으로부터의 다른 명령어를 동시에 처리
언어처리기
- 프로그래밍 언어로 작성된 프로그램을 컴퓨터 하드웨어가 실행되도록 기계어로 번역해주는 프로그램
- 컴파일러, 어셈블러, 인터프리터, 프리프로세서 등
- 번역기법 & 인터프리터 기법
원시언어(Source Language): 번역기에 입력되는 언어
원시프로그램(Source Program): 입력되는 프로그램
목적언어(Object Language): 출력되는 언어
목적프로그램(Object Program): 출력되는 프로그램
컴파일러
- 고급언어로 작성한 프로그램이 컴퓨터에서 수행되기 위해 컴퓨터가 직접 이해할 수 있는 언어로 바꾸어주는 프로그램
- 크로스 컴파일러: 원시프로그램을 컴파일러가 수행되고 있는 컴퓨터의 기계어로 번역하는 것이 아니라 다른 기종에 맞는 기계어로 번역하는 컴파일러
어셈블러
- 기호언어
- 어셈블리어로 작성된 프로그램을 원시프로그램으로하고 대응되는 2진 프로그램인 기계어 프로그램으로 바꾸어 목적프로그램을 생성하는 언어처리기
링키지 에디터
- Linkage Editor
- 재배치 형태의 기계어로 된 여러 개의 프로그램을 묶어서 로드 모듈이라는 어느 정도 실행 가능한 하나의 기계어로 번역
로더
- 로드 모듈로 된 기계어 프로그램을 실제 실행 가능한 하나의 기계어로 번역해주는 번역기
프리프로세서
- 원시언어와 목적언어가 모두 고급언어인 번역기
- 한 고급언어로 작성된 프로그램을 그에 대응되는 다른 고급언어로 번역해서 그 출력된 고급언어를 이미 구현된 방법으로 실행시킬 때 사용
인터프리터
- 소프트웨어 시뮬레이션 기법
컴파일러 | 인터프리터 |
원시언어를 특수한 형태의 중간언어로 변환 | 중간언어를 입력으로 받아 목적언어로 변환하지 않고 직접 수행 |
계속 반복 수행하는 응용 시스템에서 효율적 | 원시 프로그램의 수정 없이 개발 시스템, 교육용 시스템에서는 인터프리터가 더 능률적이며 대화식 작업에 적합 |
하나의 명령을 읽고 그것을 컴퓨터가 수행할 수 있는 기계 언어 명령으로 바꾼 후 실행되는 과정을 반복 |
장치 드라이버
- 운영체제와 응용프로그램 및 하드웨어 간의 인터페이스를 담당하는 프로그램
- 장치 제어기 또는 구동 드라이버라고도 함
- 하드웨어가 운영체제 환경에서 제대로 작동하는 데 꼭 필요한 프로그램
유틸리티 프로그램
드라이버
- 보통 하드웨어 제조업체에서 제공
- 설치 프로그램이 제공되어 이를 실행시키기만 하면 운영체제가 자동으로 하드웨어의 인식부터 드라이버의 설치까지 해주는 Plug&Play 기능을 제공
백업
- 하드디스크 외 모든 파일을 USB 또는 Zip 카트리지 등에 복사하여 데이터와 프로그램의 손상을 방지
- Norton Backup, Ghost 등
데이터 복구
- 삭제된 파일이나 정보를 복구시키는 유틸리티
파일 모음
- 파일 삭제와 추가 등의 편집 활동을 자주 실행하면 파일의 단편화가 발생
- 단편화 현상은 시스템의 접근 속도가 감소되므로 흩어진 파일의 조각들을 모아 재구성해야 함
디스크 복구
- 전기의 불규칙한 흐름으로 디스크에 있는 자료들이 손상됐을 경우 복구
바이러스 예방
- 바이러스 예방과 파괴된 자료를 복구 치료하는 유틸리티
데이터 압축
- 컴퓨터의 저장 공간을 확보하기 위해 공백 및 불필요한 자료를 제거하여 파일을 압축하는 유틸리티
응용 소프트웨어
사용자가 요구하는 특정 업무를 처리하기 위해 작성된 프로그램
활용 분야
- 개인 사무용 소프트웨어, 과학 분석용 소프트웨어
- 기업용 소프트웨어, 정보 시스템 분야, 멀티미디어 분야
- 산업용, 교육용, 군사용, 가정용 등
배포 방식
- 번들 소프트웨어: 하드웨어와 함께 묶어서 제공·판매, 기종 별로 하드웨어에 맞는 소프트웨어 개발, PC에도 운영체제나 문서작성기 등 기본 프로그램 미리 설치
- 패키지 소프트웨어: PC 출현 이후 응용 소프트웨어를 별도 패키지로 판매
- 웹 다운로드 소프트웨어: 인터넷에서 사용자가 응용프로그램을 다운로드 받아 실행, 웹 환경 응용프로그램이 대표적, 최근에는 필요할 때마다 서버에 접속하여 사용하고 접속시간에 따라 비용을 지불하는 SaaS(Software as a Service) 방식 등장
- 맞춤형 소프트웨어: 사용자 요구에 맞추어 직접 응용 소프트웨어를 개발, 대규묘 응용 소프트웨어의 경우 미리 개발하여 판매하기 어려움
생산성 소프트웨어
- 개인이나 기업, 국가 등의 조직에서 가장 인기 있는 형태의 소프트웨어로 작업을 보다 효율적으로 수행하도록 지원하는 소프트웨어
- 워드, 스프레드시트, 데이터 관리, 일정관리 프로그램 등