-
이전글
2020/05/05 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기]Section 09.소프트웨어 개발 보안 구축 #4
운영체제(OS, Operating System)의 개념
운영체제란?
컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러프로그램 모임, 사용자와 하드웨어간 인터페이스로 동작하는 system sw.
사용자
응용 프로그램
유틸리티
운영체제
하드웨어
운영체제의 목적
처리 능력 일정 시간 내에 시스템이 처리하는 일의 양 반환 시간 작업을 의뢰한 시간부터 완료까지 걸린 시간 사용 가능도 필요시 즉시 사용 가능한 정도 신뢰도 문제를 정확하게 해결하는 정도 운영체제의 기능
- 프로세서, 기억장치, 입출력장치, 파일/정보 등의 자원 관리
- 자원의 스케쥴링
- 사용자와 시스템간의 인터페이스 제공
- 하드웨어와 네트워크 관리/제어
- 데이터 관리, 데이터/자원 공유
- 시스템 오류 검사/복구
- 입/출력에 대한 보조 기능 제공
- 가상 컴퓨팅 기능 제공
운영체제의 주요 자원 관리
프로세스 관리 - 프로세스 스케쥴링/동기화 관리
- 프로세스 생성/제거/시작/정지/메시지 전달 등 기능 담당기억장치 관리 프로세스에게 메모리 할당 및 회수관리 주변장치 관리 입/출력장치 스케줄링/전반적인 관리 파일 관리 파일의 생성/삭제/변경/유지등 관리 운영체제의 종류
단일 작업 처리 시스템 MS-DOS 다중 작업 처리 시스템 Windows, UNIX, LINUX, MacOS 개인용 Windows, MacOS, MS-DOS 서버용 UNIX, LINUX Windows의 개요 및 특징
90년대 마이크로소프트사가 개발
- GUI
- 선점형 멀티태스킹 : 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환함
- PNP(Plug and Play, 자동 감지 기능) : 하드웨어가 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 기능
- OLE(Object Linking and Embedding) : 다른 응용프로그램에서 작성된 Object를 현재 작성중인 문서에 Linking하거나 embedding하여 편집할 수 있는 기능
- 255자의 긴 파일명 : \ / ? " <> | 를 제외하고 문자 및 공백합쳐서 255
- Single-User 시스템
UNIX의 개요 및 특징
60년대 벨 연구소, MIT, General Electric이 공동 개발
- 시분할 시스템을 위해 설계된 대화식 운영체제로, Open System임
- 대부분 C언어로 작성되어있어 이식성이 높으며 장치/프로세스간의 호환성이 높음
- 크기가 작고 이해가 쉬움
- 다중 사용자, 다중 작업 지원
- 통신망 관리용 운영체제로 적합
- Tree 구조의 파일 시스템
- 전문적 프로그램 개발에 용이
- 다양한 유틸리티 프로그램 존재
UNIX의 시스템 구성
커널
- 핵심적인 부분으로 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행
- 하드웨어 보호, 프로그램/하드웨어 간의 인터페이스 역할 담당
- cpu 스케줄링, 기억장치 관리, 파일관리, 입출력관리, 프로스세간 통신, 데이터 전송 및 변환등
쉘
- 명령어를 인식하고 프로그램 호출 및 명령을 수행
- 시스템/사용자간 인터페이스 역할 담당
- 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체 처리가 가능
- 파이프라인 기능을 지원하고 입/출력 재지정을 통해 출려과 입력의 방향 변경 가능
- 공용 SHELL(Bourne Shell, C shell, Korn Shell)이나 커스텀SHELL사용 가능
유틸리티 프로그램
- DOS에서의 외부 명령어에 해당
- 일반 사용자가 작성한 응용프로그램 처리
- 에디터, 컴파일러, 인터프리터, 디버거등
LINUX의 개요 및 특징
91년 리누스 토발즈가 UNIX 기반으로 제작
- Open Source Code, 다양한 플랫폼에 설치 사용 가능, 재배포 가능
- UNIX와 완벽 호환
- 특징이 대부분 UNIX와 동일
MacOS의 개요 및 특징
80년대 애플사가 UNIX기반으로 제작
- 애플사 생산 제품에만 사용가능
- 드라이버 install, uninstall 단순
운영체제의 기본 명령어
Windows 기본 명령어 // cmd에 한번 직접해보세요~ 아주재미지다
CLI 기본 명령어
- DIR : 파일 목록
- dir/p : 목록을 한 화면 단위로 표시
- dir/w : 목록을 가로로 나열하여 표시
- dir/o : 지정한 정렬 방식으로 파일 목록 표시(D:날짜/시간, E:확장자, N:파일 이름, S:파일 크기)
- dir/s : 하위 파일정보까지 표시
- dir/a : 지정한 속성이 설정된 파일 목록 표시
- COPY : 파일 복사 copy abc.txt wee ;wee 디렉터리로 abc.txt 파일 복사
- DEL : 파일 삭제
- TYPE : 파일 내용 표시
- REN : 파일 이름 변경 ren abc.txt zxc.txt
- MD : 디렉터리 생성
- CD : 무브무브!
- CLS : 클리닝
- ATTRIB : 파일 속성 변경 attrib +r abc.txt ;abc.txt의 파일을 읽기전용으로 변경
- r 읽기전용
- a 저장/백업
- s 시스템 파일
- h 숨김파일
- FIND : 파일에서 문자열 검색 find "123" abc.txt
- CHKDSK : 디스크 상대 점검
- FORMAT : 디스크 표면을 트랙과 섹터로 나누어 초기화 format c:
- MOVE : 파일 이동 move abc.txt wee
UNIX/LINUX 기본 명령어
X Windows라는 프로그램을 설치해서 GUI 방식으로 운영가능
- cat : 파일 내용 화면에 표시
- cd : 이동
- chmod : 파일 권한 변경 chmod u=rwx abc.txt ; u에게 abc.txt read write execute 권한 부여
- u : 소유자
- o : 다른 사용자
- a : 모두
- g : 그룹
- + 권한 추가, - 권한 제거, = 권한 부여
- chown : 파일 소유자/그룹 변경 chown member1 abc.txt ; abc.txt파일의 소유자를 membere1로 변경
- cp : 파일 복사
- rm : 파일 삭제
- find 파일 찾기
- fsck : 파일 시스템을 검사하고 보수 fsck /dev/sda1
- kill : ID를 이용하여 프로세스 종료
- killall : 프로세스의 이름으로 프로세스 종료
- ls : 파일 목록 표시
- rmdir : 디렉터리 삭제
- mkdir : 디렉터리 생성
- mv : 파일 이동
- ps : 현재 실행중인 프로세스 표시
- pwd : 현재 작업중인 디렉터리 경로 화면에 표시
- top : 시스템의 프로세스와 메모리 사용 현황 표시
- who : 현재 시스템에 접속해 있는 사용자 표시
기억장치 관리
기억장치의 관리 전략은 보조기억장치의 프로그램/데이터를 주기억장치에 적재시키는 시기(반입,Fetch), 적재위치(배치, Placement)등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한것
반입(Fetch) 전략
- 요구 반입(Demand) : 실행중인 프로그램이 특정 프로그램/데이터등의 참조를 요구할 때 적재
- 예상 반입(Anticipatory) : 미리 예상해서 적재
배치(Placement) 전략 ( 최적,최악은 단편화의 크기로 하면 되겠죵? )
- 최초 적합
- 최적 적합
- 최악 적합
교체(Replacement) 전략: 중요한건 FIFO, LRU, LFU
- FIFO(First In First Out)
- OPT(Optimal replacement) : 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체, 구현 불가(미래지향적이므로, 벨라디 변이)
- LRU(Least Recently Used)
- LFU(Least Frequently Used)
- NUR(Not Used Recently)
- SCR(Second Chance Replacement) : 가장 오랫동안 주기억장치에 있던 페이지중 자주 사용되는 페이지의 교체를 방지는것, 각 페이지마다 참조비트를 두어 FIFO로 페이지 교체하다가 비트가 0일땐 교체 1일땐 0으로 변경후 FIFO 리스트의 맨 마지막으로 피드백시켜 다음 순서를 기다리게 함(출처 : https://jhpop.tistory.com/34 )
LINUX 메모리 관리 방법
*windows는 작업 관리자로 응용프로그램이나 프로세스 종료로하면 됨
- meminfo 명령어를 이용
- /# cat /proc/meminfo
- 메모리 부족한 경우 Swapping 기법이나 min_free_kbytes 명령어 사용
- 스와핑 : 메모리 일부를 보조기억장치에 저장하는 기법
- /# dd if=dev/zero of=swapfile bs=1M count1024 : dd를 이용하여 1Gbyte Swap file 생성
- dd는 블록 단위로 파일을 변환하거나 복사할때 사용하는 명령어로 " dd if=/dev/zerop of=[파일명] bs[용량] count=[반복 횟수]"
- /# fallocate --length 1G /swapfile : fallocate를 이용하여 1Gbyte Swap file 생성
- /# dd if=dev/zero of=swapfile bs=1M count1024 : dd를 이용하여 1Gbyte Swap file 생성
- min_free_kbytes 커널 파라미터 : 최소한의 가용 메모리 크기를 KByte 단위로 설정
- /# /proc/sys/vm/min_free_kbytes=20480 : 가용 메모리 크기를 20,480KByte으로 설정
- 스와핑 : 메모리 일부를 보조기억장치에 저장하는 기법
프로세스 관리
프로세스란?
프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며 Job, Task라고도 하며 다음과 같이 여러 형태로 정의가 가능
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로서 디스패치가 가능한 단위
- 프로시저(프로그램이 작은 단위로 나뉜 것)가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행단위
프로세스 상태 전이
*spooling : 입출력장치의 공유 및 상대적으로 느린 입/출력장치의 처리속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
*dispatch : 프로세서를 할당받아 실행 상태로 전이되는 과정
*Hold : 제출된 작업이 디스크의 할당 위치에 저장된 상태
*ready : 프로세스는 준비상태 큐에서 실행을 준비
*block : 입출력이 완료될때까지 대기
LINUX 프로세스 관리방법
*windows는 작업 관리자로 우선순위를 설정할 수 있음
- proc 디렉토리에서 확인할 수있음
- prock directory : 보조기억장치에 실제 존재하는 파일이 아닌 RAM에 저장되어 있는 데이터를 확인할 수 있는 가상의 디렉토리
다음글 : 2020/05/07 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기] Section 10. 응용 SW 기초 기술 활용(2/4)
'2020년 > 정처기' 카테고리의 다른 글
[2020 정보처리기사 실기] Section 10. 응용 SW기초 기술 활용(3/4) (0) 2020.05.09 [2020 정보처리기사 실기] Section 10. 응용 SW 기초 기술 활용(2/4) (0) 2020.05.07 [2020 정보처리기사 실기]Section 09.소프트웨어 개발 보안 구축 #4 (0) 2020.05.05 [2020 정보처리기사 실기]Section 09.소프트웨어 개발 보안 구축 #3 (0) 2020.05.05 [2020 정보처리기사 실기] Section 09.소프트웨어 개발 보안 구축 #2 (0) 2020.05.05