[컴정개론] 소프트웨어
2023. 3. 30. 10:53ㆍ2023/컴퓨터및정보보호개론
반응형
서울여자대학교 정보보호학과 김성욱 교수님의 컴퓨터및정보보호개론 수업을 듣고 작성한 요약본입니다.
교재: 컴퓨터의 이해 (3판), 김명주 외
소프트웨어
- 하드웨어로 어떤 작업을 하기 위해 필요한 프로그램(코드)
- 앨런튜링이 최초로 사용한 용어임
- 시스템 소프트웨어
- 종류
- 운영체제
- 컴퓨터의 주기억장치 내에 상주
- 중앙처리장치, 주기억장치, 보조기억장치, 입출력장치, 네트워크 등의 컴퓨터 시스템 resource들을 효율적으로 제어하고 관리
- 사용자로부터 명령을 받아들이고 이를 해석하여 CPU에 전달할 수 있는 인터페이스를 제공하는 SW
- 링커
- 하나의 결과를 출력하기 위해 작성된 서로 다른 작은 프로그램들을 연결하여 실행 가능한 하나의 프로그램으로 만들어주는 프로그램
- 로더
- 하드디스크와 같은 보조기억장치에 저장되어있는 특정 프로그램을 중앙처리장치가 실행할 수 있도록 주기억장치에 적재하는 과정을 담당함
- 장치드라이버
- 컴퓨터 시스템에 부착된 장치를 제어하기 위한 프로그램
- 시스템 유틸리티
- 컴퓨터 시스템 동작을 도와주는 작은 규모의 프로그램 지칭
- 언어처리 프로그램(컴파일러, 어셈블러, 인터프리터 등)
- 프로그래밍 언어로 작성된 프로그램을 컴퓨터가 이해할 수 있는 기계어로 변
- 펌웨어로서의 시스템 소프트웨어
- 하드웨어화 된 소프트웨어
- 부트 로더와 BIOS의 결합
- 비휘발성인 ROM 등에 저장하여 빠른 처리 및 회로 단순화 추구
- 운영체제가 원하는 하드웨어 제어 작업을 부팅 시 직접 담당
- 디스크 부팅 영역에 존재하는 시스템 소프트웨어
- MBR(Master Boot Recorder) 방식을 이용하면 2테라까지 가능
- GPT(GUID(Globally Unique ID) Partition Table)을 이용하면 8제타바이트까지 가능
- 운영체제
- 기능
- 컴퓨터 시스템의 개별 하드웨어 요소들을 직접 제어, 통합, 관리함
- 사용자가 하드웨어를 효율적이며 편리하게 이용할 수 있도록 함화면에 보이는 파일 내용을 모니터 혹은 특정 프린터로 출력C언어로 작성된 프로그램을 기계어로 번역
- 디스크 조각 모음 → 디스크의 유휴 공간 조각들을 모아서 정리
- e.g. 메모리에 있는 데이터를 SSD로 이동하여 저장
- 종류
- 응용소프트웨어
- 사용자가 원하는 기능을 수행하기 위해 컴퓨터의 성능을 소비하는 것을 의미함
- 워드프로세서, 스프레드시트, 미디어플레이어, 메신저, 웹브라우저 등
- application suite
- 하나의 패키지로 묶인 다수의 응용소프트웨어
- e.g. MS 오피스, 한컴 오피스, 이스트소프트 알툴즈 등
- 운영체제
- 컴퓨터 하드웨어의 자원들을 효율적으로 관리하고 제어함
- 관리 기술
- 시스템 효율성
- 병목현상, 교착현상 최소화
- 관리 기술
- 사용자와 컴퓨터 사이에서 쉽고 정확하게 소통해줌
- 특징
- 시스템 편이
- 다중사용자 지원에 따른 보안(한 pc에 여러개의 guest가 존재하는 경우
- 특징
- 운영체제의 관리 대상 자원
- process : CPU가 수행중인 프로그램
- 주기억장치 : 메모리 할당, 가상메모리
- 보조기억장치 : file system 관리, garbage 수집
- 입출력장치
- 운영체제의 기능
- 컴퓨터 booting
- User Interface 제공
- 의미
- 사람들과 상호작용을 하도록 설계된 모든 정보 관련 고안품 > 사용자에게 보이는 디스플레이 화면
- 사용자와 컴퓨터가 상호작용하기 위해 최적의 사용자 환경을 제공
- 사용자 환경을 통하여 받아들인 명령을 해석하여 CPU에게 전달
- 사용자의 편의성을 위해 사용자 인터페이스는 꾸준히 개선
- 운영체제의 UI
- CLI(Character Line Interface, 문자기반 사용자 환경)
- 명령프롬프트에서 사용자의 명령어를 키보드로부터 하나씩 입력받아 처리 결과를 보여주는 방식
- 사용자와 시스템과의 관계를 봤을 때 함축적인 명령어 체계를 바탕으로 함
- 제어적 특성을 봤을 때 직접적으로 명령어를 입력함
- 다양한 명령어들의 조합과 시스템을 통해 할 수 있는 못든 것을 수행할 수 있음 → 가장 유연성이 좋음
- 행동방식은 명령어를 치면 답을 주는 형식으로 정적임
- GUI(Graphical User Interface, 그래픽 기반 사용자 환경)
- 마우스를 이용하여 아이콘이나 메뉴를 클릭함으로써 운영체제에게 명령을 전달하고 그 결과를 확인하는 방식
- 사용자와 시스템과의 관계를 봤을 때 마우스 조작을 통한 포인터의 이동이라는 간접적 접근
- 제어적 특성을 봤을 때 마우스 포인터를 탐색적으로 옮겨다님
- 행동방식은 그림, 사운드, 애니메이션 등의 효과를 바탕으로 풍부한 인터페이스를 제공하여 동적임
- NUI(Natural User Interface, 물리적 기반 사용자 환경)
- 사용자의 동작, 언어, 표정, 뇌파 등을 인식
- VR, AR, AI 비서 등에서 다양한 시도
- UX(User eXperience, 사용자 경험)의 목표
- 사용자와 시스템과의 관계를 봤을 때 오브젝트에 직접적으로 접촉
- 제어적 특성을 봤을 때 상황에 따라 달라짐
- 다양하고 세부적인 명령어 체계가 아닌 특정 인터페이스 동작에 집중 → 유연성이 가장 좋지 않음
- 행동방식은 다이나믹에 사실적 요소를 더 부가함
- CLI(Character Line Interface, 문자기반 사용자 환경)
- 의미
- CPU, 주기억장치, 입출력장치 등과 같은 하드웨어 자원 관리
- process 관리
- multi-processing
- 둘 이상의 프로세스를 CPU가 동시에 실행함 → multi tasking
- multi programming은 둘 이상의 프로그램을 메모리에 실어 CPU가 실행하도록 함
- multi-processing
- 주기억장치 관리
- 가상메모리 기술을 이용해 메모리 사용을 극대화 함
- 입출력 장치 관리
- Spooling(Simultaneous Peripheral Operation On-Line) 지원
- 여러 프로세스들의 입출력 작업이 충돌하지 않도록 조절 할당
- process 관리
- 작업의 순서 scheduling
- 프로그램 실행을 제어하며 데이터와 파일의 읽기 쓰기 관리
- 파일 관리와 API
- 응용 프로그램 개발의 어려움
- 입출력 장치, 보조기억장치 등 컴퓨터 하드웨어를 사용자가 직접 다루는 경우
- 중간에 운영체제(또는 언어 개발 도구)가 API를 제공
- API(Application Programming Interface)
- 응용소프트웨어에서 하드웨어 제어를 쉽게 사용할 수 있도록 제공
- Specification만 제공하고 implementation은 숨김
- SDK(소프트웨어 개발 도구) : 구현에 해당하는 라이브러리 제공
- 사용자에게 입출력 시스템, 보조기억장치는 하나의 파일로 간주
- 응용 프로그램 개발의 어려움
- 파일 관리와 API
- 입출력 연산 control
- 컴퓨터 shutdown, rebooting
- 운영체제의 종류와 특성
- DOS(Disk Operation System)
- 처음으로 개인용 컴퓨터에서 사용된 운영체제
- 1980년대와 90년도 초반까지 대부분의 pc에서 사용됨
- MS-DOS, PC-DOS, Dr-DOS 등
- MS-DOS가 일반적으로 많이 사용됨
- CLI 기반으로 사용자들은 필요한 명령어들을 숙지하여 사용함
- 멀티태스킹 불가능
- OS/2 (Operating System/2)
- MS와 IBM이 초기에 제작한 컴퓨터 운영체제(IBM PS/2용 운영체제)
- 처음 80286 컴퓨터를 위해 설계되었으나 80386이나 80486 컴퓨터에서 사용할 수 있도록 업그레이드 됨
- 장점
- 비슷한 시기의 일반 개인용 컴퓨터 운영체제보다 안정성이 뛰어남
- 응용 프로그램에 의한 시스템 다운 현상이 없음
- 파일 손실 가능성과 디스크의 단편화 현상이 적음
- GUI 방식으로 사용자 인터페이스인 WPS(Work Place Shell)를 사용
- folder 개념의 file 관리
- 단점
- OS/2를 기반으로 한 소프트웨어 개발자의 부재
- OS/2의 초기 버전인 MS-DOS 프로그램을 제대로 실행하지 못해 OS/2의 수요가 거의 없었음
- Windows
- MS사에서 만든 GUI 환경의 운영체제 제품 명
- 1985년 Windows 1.0을 발표한 후 꾸준히 업그레이드
- 1990년 Windows 3.0부터 대중들에게 널리 알려짐
- 1995년 Windows 95가 출시
- 통합된 TCP/IP, 전화 접속 네트워킹, 긴 파일 이름 지원 등이 포함됨
- 현재
- 멀티미디어 기능이 대폭 보강된 Windows XP, Windows Vista 등이 나옴
- 현재는 Windows 11이 나옴(2021.06)
- UNIX
- 1969년에 AT&T의 벨 연구소에서 개발한 운영체제
- 중형 컴퓨터에 사용하도록 고안됨(MULTICS에서 출발)
- Dennis Ritchie, Ken Thomson이 개발
- C, 어셈블러를 이용해 개발
- 여러가지 유틸리티가 공개되면서 일반 사용자들에게 확산
- 특징
- 다중 사용자, 다중작업 처리 가능
- 프로그램 개발이 쉬운 운영체제
- 일반통신 서비스 프로그램은 대부분 Unix를 기반으로 함
- 1969년에 AT&T의 벨 연구소에서 개발한 운영체제
- Linux
- 1991년 핀란드의 대학생이었던 리누스 토발즈가 Unix 기반 개인 운영체제로 만듦
- 오픈소스 os로 프로그래머가 원하는대로 특정 기능을 추가할 수 있음
- 어느 플랫폼에도 포팅이 가능하고 무료
- Redhat, Debian, Slackware
- CentOS, OpenSuse, Ubuntu 등
- Solaris
- Unix 계열의 운영체제
- Linux보다 훨신 먼저 출시된 운영체제
- SUN에서 제작한 Sparc CPU를 사용한 기종에서만 사용되는 전용 운영체제였음
- 인텔 아키텍처의 대량 보급으로 인텔용 Solaris도 출시
- Mac OS
- 애플 매킨토시 계열 os
- 개인용 컴퓨터에 GUI를 최초로 도입함
- 1984년에 처음으로 세상에 선보인 이후로 거듭 발전
- 클래식 시리즈와 Mack OS X이후의 것으로 구분함
- 최신버전은 Mac OS 12.0
- 문서 편집, 그래픽 분야에서 높은 호응도
- iOS
- Mac OS X를 터치 기반 모바일 기기용으로 재구성
- 초기에는 iPhone OS라고 했으나 2016.6 버전4부터 iOS로 개명
- Mac OS와 인터페이스는 전혀 다르지만 애플의 객체지향 API인 코코아 기반 프레임워크는 공통적으로 사용됨
- 멀티터치 제스쳐 기반 인터페이스 제공
- Safari, iTunes, iBooks, iCloud 내장 제공
- 모바일 운영체제
- 현재 세계 시장에 공급됟는 범용으로 사용되는 모바일 운영체제
- Windows mobile, Symbian, Palm, BlackBerry, Linux, Android 등
- MS의 Windows Mobile, Nokia의 Symbian : 사용이 편리했으나 단종됨
- Apple, Microsoft, Palm 등은 좀 더 많은 개발자와 사용자들에게 API를 제공
- Linux는 모든 것을 공개함
- Android : Linux 커널 2.6 기반 오픈소스, 공개표준
- 2005년 구글이 캘리포니아주의 작은 회사를 인수(안드로이드)
- 2007년 구글, 퀄컴, 인텔, 삼전, LG가 세계 이동통신회사 연합(OHA)을 결성하고 모바일 OS공개 표준 개발 예고
- Linux 커널 2.6 기반 안드로이드 발표, 오픈소스 선언
- 자바, 코틀린으로 응용프로그램을 개발하고 개발된 앱은 안드로이드 마켓에서 배포
- 버전은 알파벳 C부터 음식이름(디저트나 케익류) 알파벳 순으로 코드명을 사용함
- 반년 혹은 1년단위로 업그레이드
- 현재 세계 시장에 공급됟는 범용으로 사용되는 모바일 운영체제
- DOS(Disk Operation System)
- 컴퓨터 하드웨어의 자원들을 효율적으로 관리하고 제어함
반응형
'2023 > 컴퓨터및정보보호개론' 카테고리의 다른 글
[컴정개론] 하드웨어 (0) | 2023.04.09 |
---|---|
[컴정개론] 컴퓨터에서의 데이터 표현 (0) | 2023.04.03 |
[컴정개론] 입출력 장치 (0) | 2023.03.23 |
[컴정개론] 정보, 인류, 산업혁명, 컴퓨터의 역사 (1) | 2023.03.22 |