관리 메뉴

나구리의 개발공부기록

CHAPTER 01 - 운영체제의 특징(1) 본문

2024년도 수제비 실기책(6판) 내용 


1. 운영체제 종류

1) 운영체제(OS; Operating System) 의 개념

  • 사용자가 컴퓨터의 하드웨어를 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어
  • 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 편리성을 제공함
  • 컴퓨터 시스템과 사용자 간의 인터페이스 기능을 담당함

(1) 운영체제의 일반적 특징

특징 설명
사용자 편리성 제공 한정된 시스템 자원을 효과적으로 사용할 수 있도록 관리 및 운영함
인터페이스 기능을 담당 컴퓨터 시스템과 사용자를 연결함
스케줄링 담당 다중 사용자와 다중 응용 프로그램 환경하에서 자원의 현태 상태를 파악하고 자원 분배를 위한 스케줄링을 담당
자원 관리 CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 관리
제어 기능 입출력 장치와 사용자 프로그램을 제어

 

(2) 운영체제에서 커널의 기능

 

  • 운영체제는 크게 인터페이스(쉘) + 커널의 구조
  • 운영체제의 핵심적인 기능들이 커널에 모였다면, 인터페이스(쉘)는 이러한 커널을 사용자가 보다 편리하게 사용할 수 있게 해줌

[1] 쉘(Shell)

 

  • 사용자가 입력시킨 명령어 라인을 읽어 필요한 시스템 기능을 실행시키는 명령어 해석기
  • 시스템과 사용자 간의 인터페이스를 제공하며 여러 가지 내장 명령어를 가지고 있음

[2] 커널(Kernel)

 

  • 운영체제의 핵심이 되는 기능들이 모여 있는 컴퓨터 프로그램
  • 컴퓨터가 부팅 될 때 주기억 장치에 적재된 후 상주하면서 실행하며, 프로그램과 하드웨어 간의 인터페이스 역할을 담당
기능 설명
프로세스 관리 - 프로세스 스케줄링 및 동기화 관리 담당
- 프로세스 생성과 제거, 시작과 정지, 메세지 전달 등의 기능 담당
기억장치 관리 프로세스에게 메모리 할당 및 회수 관리 담당
주변장치 관리 입/출력 장치 스케줄링 및 전반적인 관리 담당
파일 관리 파일 관리 파일의 생성과 삭제, 변경, 유지 등의 관리 담당

2) 운영체제의 종류

(1) Windows 운영체제

 

  • MS-DOS의 멀티태스킹 기능과 GUI 환경을 제공하는 마이크로 소프트사가 개발한 운영체제
  • Windows 95를 발표한 이후 98, ME, XP, 7, 8, 10, 11 등의 버전으로 지속적 출시가 되고있음

[1] Windows OS 특징

 

  • 그래픽 사용자 인터페이스(GUI) 제공 : 키보드 없이 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 기반의 인터페이스 방식
  • 선점형 멀티태스킹 방식 제공 : 동시에 여러 개의 프로그램을 실행하면서 운영체제가 각 작업의 CPU 이용 시간을 제어
  • 자동감지 기능 제공 : 하드웨어를 설치했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 자동감지 기능 제공
  • OLE (Object Linking and Embedding) 사용 : 개채를 현재 작성 중인 문서에 자유롭게 연결 또는 삽입하여 편집할 수 있게 하는 기능 제공

(2) 유닉스(Unix) 계열 운영체제

 

  • 데니스 리치와 켄 톰슨(Ken Thompson) 등이 함께 벨 연구소를 통해 만든 운영체제이며, 90% 이상 C 언어로 구현되어 있는 운영체제로 범용 다중 사용자 방식의 시분할 운영체제
  • 처음부터 다양한 시스템에 서로 인식할 수 있고, 멀티 태스킹을 지원하도록 설계됨

[1] Unix 계열 운영체제 특징

 

  • 대화식 운영체제 기능 제공: 프롬프트(컴퓨터 터미널에서 CLI의 명령 대기모드)가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하는 사용자 명령 기반의 대화식 운영체제 기능을 제공
  • 다중 작업 기능 제공: 다수의 작업(프로세스)이 중앙처리장치(CPU)와 같은 공용자원을 나누어 사용하여 한 번에 하나 이상의 작업을 수행하는 기능 제공
  • 다중 사용자 기능 제공: 여러 대의 단말(키보드와 모니터)이 하나의 컴퓨터에 연결되어서, 여러 사람이 동시에 시스템을 사용하여 각각의 작업을 수행할 수 있는 기능 제공
  • 이식성 제공: 90% 이상 C언어로 구현되어 있고, 시스템 프로그램이 모듈화 되어 있어서 다른 하드웨어 기종으로 쉽게 이식 가능
  • 계층적 트리 구조 파일 시스템 제공 : 유닉스는 계층적 트리 구조를 가짐으로써 통합적인 파일 관리가 용이

[2] 리눅스(Linux) 운영체제

 

  • 유닉스를 기반으로 개발되고, 소스 코드가 공개된 오픈 소스 기반의 운영체제
  • 데비안, 레드헷, Fedora, Ubuntu, CentOS와 같이 다양하게 출시 되고 있음
  • 유닉스 계열의 운영체제이므로 대화식 운영체제 , 다중 작업 기능, 다중 사용자 기능, 이식성, 계층적 트리 구조 파일 시스템을 가짐

[3] 맥(Mac) 운영체제

 

  • 애플이 유닉스를 기반으로 개발한 그래픽 사용자 인터페이스 기반의 운영체제
  • 1999년 OS X로 업데이트를 하였고, 이후에는 클라이언트 버전, 서버 제품 등으로 제품군을 확대하였고, 시에라, 모하비 등을 지속적으로 발표하고 있음

[4] 안드로이드(Android) 운영체제

 

  • 휴대 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹 브라우저, 이메일 클라이언트 등)을 포함하고 있는 운영체제

[1] 안드로이드 특징

 

  • 리눅스 기반 : 리눅스 커널 위에서 동작
  • 자바와 코틀린 언어 : 고수준 언어를 사용해 응용 프로그램을 작성하고 생산성이 높으며 전문 지식이 없어도 개발 가능
  • 런타임 라이브러리 : 컴파일된 바이트 코드 구동 가능
  • 안드로이드 소프트웨어 개발 키트(SDK) : 응용프로그램을 개발하는데 필요한 각종 도구와 API를 제공

3) 운영체제 발달 과정

세대 시스템 설명
1세대 일괄 처리 시스템 하나의 작업이 끝나기 전까지는 다른 작업을 할 수 없는 시스템
2세대 시분할 시스템
(Time Sharing
System)
여러 명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리하는 시스템

** CPU 스케줄링과 다중 프로그래밍을 이용해서 각 사용자들에게 컴퓨터 자원을 시간적으로 분할 하여 사용할 수 있게 해주는 대화식 시스템
다중 처리 시스켐 컴퓨터 시스템 한 대에 둘 이상의 중앙처리장치(CPU)를 이용하여 병렬로 처리하는 시스템
3세대  범용 시스템 특별히 정해진 용도로만 사용되는 것이 아니라 메모리에 적재되어 실행되는 프로그램에 따라 여러 가지 용도로 사용하는 시스템
4세대 분산 처리 시스템 서로 다른 장소에 위치한 컴퓨터 시스템에 기능과 자원을 분산시켜 상호 협력할 수 있는 시스템

2. 운영체제 기본 명령어 활용

1) 운영체제 제어

  • CLI(Command Line Interface) : 사용자가 직접 명령어를 입력, 컴퓨터에 명령을 내리는 방식
  • GUI(Graphic User Interface) :  마우스로 화면을 클릭하여 그래픽 위주로 컴퓨터를 제어하는 방식

2) Windows 운영체제의 기본 명령어

  • CLI 명령어를 입력하기 위해서는 명령창이 필요하며 Help를 명령 창에 입력함으로 써 입력이 가능하며 파일을 이동하고 프로그램을 실행하는 것과같은 행동을 GUI 명령으로 제어할 수 있음

(1) 기본 명령어

명령어 설명
ATTRIB 파일 속성을 표시하거나 바꿈
CALL 한 일괄 프로그램에서 다른 일괄 프로그램을 호출
CD 현재 디렉터리 이름을 보여주거나 바꿈
CHKDSK 디스크를 검사하고 상태 보고서를 표시
CLS 화면을 지움
CMD Windows 명령 프롬프츠 창을 열어줌
COMP 두 개 이상의 파일을 비교
DISKPART 디스크 파티션 속성을 표시하거나 구성
ECHO 메세지를 표시하거나 ECHO를 사용 또는 사용하지 않음
ERASE 하나 이상의 파일을 지움
EXIT CMD, EXE 프로그램(명령 인터프리터)을 마침

3) 리눅스/유닉스 계열의 기본 명령어

  • 쉘에서 입력할 수 있으며 리눅스는 최상위 유저를 CLI 환경에서 #으로 표시하며 일반 유저를 $로 표시하고 명령어에 대한 도움말은 --help, -h를 명령어 뒤에 붙임으로써 확인할 수 있음

(1) 기본 명령어

구분 명령어 설명
시스템
관련
uname -a - 시스템의 모든 정보를 확인하는 명령어
- 시스템 이름, 사용 중인 운영체제와 버전, 호스트명, 하드웨어 정보 등을 표시
uname -r 운영체제의 배포버전을 출력하는 명령어
cat 파일의 내용을 화면에 출력하는 명령어
uptime 시스템의 가동 시간과 현재 사용자 수, 평균 부하량 등을 확인하는 명령어
사용자 id 사용자의 로그인명, id 그룹, id 등을 출력하는 명령
last 시스템의 부팅부터 현재까지의 모든 사용자의 로그인과 로그아웃에 대한 정보를 표시하는 명령어
who 현재 접속 사용자 정보를 표시하는 명령어
파일 처리 ls 자신이 속해있는 폴더 내에서의 파일 및 폴더들을 표시하는 명령어
pwd - print working directory의 약자
- 현재 작업 중인 디렉토리의 절대 경로를 출력하는 명령어
rm 파일 삭제 명령어
cp 파일 복사 명령어
mv 파일 이동 명령어
프로세스 ps 현재 실행되고 있는 프로세스 목록을 출력하는 명령어
pmap 프로세스 ID를 기준으로 메모리 맵 정보를 출력하는 명령
kill 특정 PID 프로세스 종료 명령어
파일 권한 chmod 특정 파일 또는 디렉토리의 퍼미션 수정 명령어
chown 파일이나 디렉토리의 소유자, 소유 그룹 수정 명령어
네트워크 ifconfig 네트워크 인터페이스를 설정하거나 확인하는 명령어
host 도메인(호스트)명은 알고 있는데 ip 주소를 모르거나 혹은 그 반대의 경우에 사용하는 명령어
압축 tar 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령어(압축은 불가)
gzip 파일을 묶거나 풀 수는 없지만 압축을 담당하는 명령어
검색 grep 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자 할 때 사용하는 명령어
find 특정한 파일을 찾는 명령어
파일 이동 cp 디렉토리를 복사할 때 사용하는 명령어
rsync 로컬 또는 원격에 파일과 디렉토리를 복사하고 동기화하는 명령어
디스크
사용
df 시스템에 마운트된 하드디스크의 남은 용량을 확인할 때 사용하는 명령어
du 파일 사이즈를 킬로 바이트 단위로 보여주는 명령어
디렉터리 이동 cd 디렉토리를 이동하는 명령어

 

(2) 리눅스/유닉스 운영체제의 파일 접근 권한 관리

 

[1] 개요

 

  • 리눅스/유닉스 시스템에서 사용자 혹은 프로세스가 파일을 읽거나 실행하면 open(), read(), write()와 같은 시스템 호출이 수행되고, 각 파일의 정보가 저장된 i-node 값을 읽게됨
  • i-node 에는 각 파일의 물리적 위치, 생성/수정/사용 날짜 등의 정보와 더불어 파일 소유자/그룹, 접근 권한 등의 파일 접근제어와 관련된 정보가 수록되며, 해당 정보를 이용하여 DAC 기반 접근제어를 수행함

[2] 파일 접근제어 매커니즘

 

* 접근 권한 유형(설정 명령어: chown, chgrp)

접근 권한 설명
User 파일을 소유하고 있는 사용자(Owner)
Group 소유자를 제외하고 파일과 같은 그룹에 속해있는 모든 사용자 모임
Other 그 밖의 사용자

 

* 접근 권한 모드(설정 명령어: chmod)

User Group Other
R W X R W X R W X
4 2 1 4 2 1 4 2 1

 

  • Read, Write, eXcute로 파일을 읽거나(r), 쓰거나(w), 실행(x) 할 수 있는 3가지 모드로 구분함
  • 파일이 rwx 모드를 지원한다면 그 파일을 읽고, 쓰고, 실행할 수 있다는 것을 의미함

[3] 접근 권한 변경(chmod)

 

  • 명령어 : chmod [-R] permission file_name1 | directory_name1 [file_name2 | directory_name2 ...]
  • chmod 명령은 기존 파일 또는 디렉토리에 대한 접근 권한을 변경할 때 사용하며 해당 파일 소유주나 슈퍼유저(root)만이 실행 할 수 있음
  • -R 옵션 : 하위 디렉토리와 파일의 권한까지 변경
  • permission : 기호나 8진수로 접근 권한을 지정
  • 파일의 접근 권한을 세개의 8진수로 기술할 수 있음, r = 4, w = 2, x = 1
구분 설명
대상 u(user), g(group), o(other), a(all)
연산자 +(추가), -(제거), =(지정)
접근 권한 r(읽기), w(쓰기), x(실행)

 

chmod o-w yoom.c		# yoom.c에 대한 other의 쓰기 권한을 제거
chmod 664 yoom.c		# yoom.c의 접근 권한은 664(rw-rw-r--)
chmod go-w yoom.c		# yoom.c의 group과 other의 쓰기 권한을 제거
chmod a=rw yoom.c		# yoom.c의 모든 사용자 권한을 rw로 변경(rw-rw-rw)
chmod g+w, o-x yoom.c	# yoom.c의 group에는 읽기 권한을 추가, other에는 실행 권한을 제거
chmod 777 yoom.c		# yoom.c의 권한을 777(rwxrwxrwx)로 변경(모든 사용자에게 rwx권한 부여)
chmod 664 yoom.c		# yoom.c의 권한을 664(rw-rw-r--)로 변경(user,group에 rw, other에 r 권한 부여)
chmod 600 yoom.c		# yoom.c의 권한을 600(rw-------)로 변경(user에 rw권한 부여)