CPU - 중앙처리장치
CPU 정의 : 입력장치로부터 자료를 받아 연산처리, 결과를 출력장치로 전달하는 제어/관리하는 핵심장치 (두뇌역할)
- CPU 구성요소
1) ALU(연산장치) : 산술연산,논리연산
2) 레지스터 : 소규모 데이터,중간 결과를 기억해두는 고속 영역
3) Control Unit(제어장치) : CPU가 처리해야할 명령어 해석. 제어 신호 발생
4) 내부 CPU 버스 : ALU 레지스터간의 데이터 이동
- 레지스터 종류
PC : 다음에 수행할 주기억장치 주소 기억
MAR : 주기억장치에 접근하기 위한 주기억장치 주소 기억
MBR : 주기억장치 입/출력 자료 기억
IR : 주기억장치 -> 인출한 명령코드 기억
4) CPU 버스 인터페이스 : ALU(연산장치)와 레지스터 간 데이터 송수신 경로
2 BUS 개념 : 주기억장치와 중앙처리장치간의 데이터,제어 정보,주소를 전달하는 전송 경로
버스 종류(입출력 영향을 끼침)
1) 데이터 버스 : 데이터 전송 용도
2) 주소 버스 : 기억장소 위치, 식별
3) 제어 버스 : CPU, 기억장치, I/O 장치사이의 제어신호 전송
CPU 명령 실행주기 : 명령어 실행 끝난 후 다음 명령어 수행이 시작되어 끝날때까지 인출이 반복되는 주기
1 인출 : 메모리 데이터를 로드하여 레지스터에 적재
2 간접 : 간접주소 방식 채택 경우 - CPU가 메모리 참조시 메모리 주소 참조
3 실행 : 명령,데이터 -> 산술,논리연산 수행
4 인터럽트 : 예기치않은 문제 발생시에도 업무처리가능 하게 하는 기능
기억장치 계층구조
레지스터 기억장치용량 장치비용 속도
캐시 작음,큼,빠름
주기억장치
보조기억장치 큼 작음 느림
캐시메모리 : CPU와 주기억장치 속도차이 극복을 위한 버퍼 메모리(기억장치)
캐시메모리 사상방식
1. 직접사상 : Main memory를 여러구역으로 분할하여 캐시슬롯과 직접 매핑
2. 집합 연관사상 : 직접 + 연관 방법 메모리를 세트로 분할하여 매핑
3. 연관사상 블록들이 캐시 슬롯에 어느 곳이든 적재 가능
캐시메모리 관리 방식 (CPU 원하는 데이터가 캐시메모리에 적재하도록 관리)
(호출기법)
1. Demand : 필요시 캐시 인출
2. Pre-Fetch : 예상되는 데이터를 미리 패치
(교체기법)
캐시 메모리 교체 알고리즘
1. FIFO(First In First Out): 가장 오래 있었던 Page 교체/ 자주 사용되는 페이지가 교체될 수 있음
2. LFU(Least Frequently Used)가장 사용횟수가 적은 Page 교체/가장 새로 들어온 페이지 교체될 수 있음
3. LRU(Least Frequently Used)가장 오랫동안 사용되지 않은 Page 교체/오버헤드 우려
4. NUR(Not used Recently) 미사용 Page 교체 (참조/수정비트 사용)
5. SCR(Second chance Replacement) :최초 참조 비트 1,1-> 0 두번 기회
페이지교체시 문제점
Page Fault(페이지부재), DemadPaging, Thrashing(부재가 너무빈번하여 프로세스 수행보다 페이지 교체 시간소요가 더 소모됨)
가상메모리(Virtual Memory) : Virtual Address Space 사용,물리적 메모리보다 더 큰용량 제공
가상메모리 관리 단위 (페이지 vs 세그먼트) : 비연속 할당
페이지 : 동일한크기의 최소 논리 분할 단위 / 내부단편화
세그먼트 : 용도별로 논리적 단위로 나눔 / 외부단편화
연속할당 : 고정분할, 가변분할
I/O 인터페이스 (주기억장치 - 보조기억장치 입출력)
1. CPU 경유 : 프로그램에 의한 I/O,인터럽트에 의한 I/O
- 프로그램에 의한 I/O : CPU가 주변장치를 연속 감시하는 Polling 방식
- 인터럽트에 의한 I/O : 인터럽트 요청 감지시 수행작업 중지
2. CPU 비경유 : DMA,Channel I/O
- DMA : 메모리와 주변장치를 직접 관리, 속도 빠름
- 채널 I/O(I/O Processor): I/O장치의 복잡함으로 DMA한계를 보완하여 별도 전용 처리기능 프로세서 탑재
1. Multiplexer Channel : 저속장치, 시분할 방식
2. Selector : 고속장치.단일 입출력
운영체제
: 컴퓨터 시스템의 자원들을 효율적으로 관리, 사용자의 컴퓨터 사용 편의성 환경 제공
운영체제의 목적
1. 처리능력 향상
2. 신뢰성 향상
3. 응답시간의 단축
4. 자원 활용률 향상
5. 가용성 향상
운영체제 주요 자원 관리 기능
1. 프로세스 관리
2. 기억장치 관리
3. 주변장치 관리
4. 파일 관리
프로세스 관리
프로세스 : 레지스터,스택,포인터,실행중인 프로그래,데이터 등의 집합체
- 실행중인 프로그램,PCB 보유. Library Call, 자원할당의 기본 단위
스레드 : - 제어의 흐름, 프로세스에서 실행의 개념, CPU 작업의 기본단위, System Call
CPU 스케줄링 기법(프로세스 상태 전이)
컴퓨터의 자원을 효율적으로 사용하기 위한 정책,자원을 요청하는 프로세스 순서를 정함 점유방식
1. 선점(Preemptive): 프로세스 CPU 점유시 다른프로세스 점유 가능(Round-robin,SRT)
2. 비선점 (Non-preemtive): 프로세스 CPU 점유시 독점(FCFS,SJF,HRN)
(비선점 방식)
1. FCFS(First Come First Service): 대기큐에 도착한 순서에 따라 CPU 할당
2. SJF(Short Job First): 수행시간이 짧은 작업부터 CPU 할당
3. HRN(Highest Ratio Next): SJF개선하여 프로세스 우선순위로 할당
(선점)
1. Round-robin : 각 프로세스는 같은 시간을 CPU에서 할당 받음
2. SRT(Shortest Remainging Time) : 수행시간이 짧은 작업부터 CPU할당하지만 수행중 다른 프로세스가 더 짧은시간 일때 점유 가능
Multi Level Queue : 여러 종류의 그룹으로 나누어 각자 독자적인 스케줄링 기법 사용
Multi Level Feedback Queue : 그룹들을 라운드로빈 + 비선점방식 (Hybrid 스케줄링)
병행성 제어
상호 배제 : 다수의 프로세스 동일 자원 접근 시 무결성 보장,임계영역 사용
1.임계영역 : 공유자원의 독점을 보장하는 코드 영역,병렬컴퓨팅 일부로도 쓰임,세마포어 개념이용
세마포어: 공유자원의 개수를 나타내는 변수
2. 모니터 상호배체 기법: 하나의 프로세스만이 모니터내부의 존재,모니터 내부의 지역변수로 정의
교착상태: 하나이상의 프로세스가 더 이상 계속할 수 없는 특정 사건을 기다리고 있는 상태
교착상태 발생조건
1.상호배체: 다수의 프로세스 동일 자원 접근 시 무결성 보장, 임계영역 사용
1.임계영역: 공유자원의 독점을 보장하는 코드 영역,병렬컴퓨팅 일부로도 쓰임,세마포어 개념이용
세마포어 : 공유자원의 개수를 나타내는 변수
2. 모니터 상호배제 기법 : 하나의 프로세스만이 모니터내부의 존재,모니터 내부의 지역변수로 정의
교착상태 : 하나이상의 프로세스가 더 이상 계속할 수 없는 특정 사건을 기다리고 있는 상태
교착상태 발생조건
1. 상호배제 : 하나이상의 프로세스가 자원을 배타 점유
2. 점유와 대기 : 부분할당으로 다른 종류의 자원을 요구하면서 자원 점유
3. 비선점: 자원이 해제되지 않으
4. 환형대기 : 프로세스와 자원들이 원형을 이루며 서로 상대방의 자원 요철
교착상태 대응 방법
1. 예방: 필요 조건을 부정,교착상태 예방
- 점유와 대기 부정 : 필요한 자원을 일시에 요청
- 비선점 조건의 부정 : 자원점유 후 자원 요청시 자원해제 선 요청
- 환형대기 조건 부정 : 프로세스들의 자원별로 우선순위 결정
- 상호배제 조건 부정 : 자원 비공유 전제
2. 회피: 가능성을 인정, 회피
- 은행원 알고리즘: 프로세스가 요구한 최대 요구량 만큼 자원을 할당 안전순서서열 존재, 교착상태는 불안전상태에서만 일어남.
3. 발견: 교착상태 발생 허용, 원인을 규명하고 해결
- 교착상태 발견 알고리즘 : 교착상태 발생 검사 알고리즘, 교착상태 빈도수 파악
- 자원할당 그래프: 방향그래프를 이용, 그래프 소거법을 이용하여 교착상태 감지
4 회복
- 프로세스 중지
- 선점
장치관리기법
디스크
디스크 접근 시간
1. 탐색시간 : 현위치에서 특정실린더로 디스크 헤드가 이동하는데 소요되는 시간
2. 회전 지연시간 : 섹터가 디스크 헤드까지 도달하는 시간
3. 전송시간 : 데이터 전송 시간
디스크 스케줄링 기법
1. FCFS : 먼저 들어온 요청 우선 처리
2. SSTF : 탐색거리가 가장 짧은 트랙 요청 우선 처리
3. SCAN : Head가 이동하는 모든 요청을 서비스 끝까지 처리 후 역방향 처리
4. C-SCAN : SCAN에서 바깥쪽에서 안쪽으로 이동
5. C-LOOK : 진행방향에서 요청 없을시 헤드를 처음위치로 이동
파일 시스템
FAT
1. FAT16 : 대부분 MS 호환가능,2GB,암호화 및 압축 불가능,파일명 최대 영문8자, 클러스터 1632KB
2. FAT32 : 2TB,암호화 및 압축 불가능,파일명 최대 영문 256자,클러스터 4KB
3. NTFS : 암호화 및 압축 지원, 가변클러스터
EXT
1. EXT : MINIX File System 보안, 최대 2GB, 파일명 255bytes,단편화문제
2. EXT2 : 2GB,볼륨32TB,오류 수정 지원
3. EXT3 : 저널링기능,온라인 파일 시스템 증대, 디스크조각화 최소화
4. EXT4 : 16GB, 볼륨 16Exabyte,온라인 조각모음, 저널 체크섬, 하위호환 가능
UFS : 유닉스 파일 시스템 (부트블록,슈퍼블록,실린더그룹,i-node 테이블)
1. 슈퍼블록 : 파일 시스템 크기,i-node 테이블의 크기
2. I-node 테이블 : 파일정보 - 파일크기,위치,유형 허가권,날짜
RAID : 디스크 고장 시 복구를 위해 2개이상에 디스크에 데이터를 저장하는 기술, 저 가용성 디스크를 배열 구조로 중복 구성
RAID 0 : 최소 2개 디스크,데이터를 나누어 저장,장애발생 시 복구 불가
RAID 1 : 디스크 완전 이중화, 많음 비용 발생,ReadWrite 병렬가능
RAID 2 : Hamming Code를 이용하여 오류 복구
RAID 3 : Parity 정보를 별도 디스크에 저장
RAID 4 : Parity 정보를 별도 디스크에 블록별 저장 Write 성능 저하
RAID 5 : 분산 Parity 구현, 안정성 향상
RAID 6 : Parity 다중화, 장애발생 상황에서도 다른 정상 동작
리눅스 서버 보안
리눅스 핵심 구성요소
1. 쉘 : 명령어 해석기, 명령의 입출력 수행(Bash,Bourne,C,korn) 프로그램 실행
2. 커널 : 주기억장치에 상주, 사용자 프로그램 관리
3. 파일 시스템 : 정보를 저장하는 기본적 구조,계층구조
리눅스 파일 종류
1. 루트 파일 시스템 : 시스템 프로그램,디렉터리
2. 일반 파일 : 프로그램,원시 프로그램파일, 텍스트 등등
3. 디렉터리 파일 : 디렉터리에 관한 정보를 저장하는 논리적인 단위
4. 특수 파일 : 주변장치에 연결된 파일
리눅스 부팅
Run Level
0. PROM 감시
1. 사용자 로그인 불가능한 상태, 암호변경할 때 사용
2. 공유된 자원이 없는 다중 사용자 단계
3. 공유 자원을 가진 다중 사용자 단계
4. 사용 되지 않는 단계
5. 3단계 기동후 x-windows 실행
6. 재부팅 단계 > 3단계로 재부팅
리눅스 인증과 권한 /etc/passwd
passwd 파일 구조
Root : x : 0 : 0 : root : /root : /bin bash
사용자계정 : 패스워드(/etc/shabow) : UserID : GroupID : Home Directory : Shell
리눅스 권한 관리
Umask ( r = 4, w = 2 x=0, User : Group : Other ) : Default 권한, 파일 666, 디렉토리 77
chmod : 권한 부여 명령 (chmod 777 파일명, chmod u+g,g-w,o+r 파일명
chown : 파일에 대한 사용자,그룹 변경 (chown 소유자 : 그룹)
특수권한 관리(setuid,setgid,stickbit)
1. setuid : 파일을 소유자권한으로 실행가능(4000, u+s)
2. setgid : 파일을 그룹 권한으로 실행가능 (2000, g+s)
3. stickybit : 공용 디렉토리
로그파일 /var/log
현재 사용자 확인 : w,who - 로그인 사용자 ID, 사용 터미널, 로그인 시간
로그인한 사용자 정보 : /var/utmp
로그인,로그아웃 정보 : /var/wtmp (last 명령어 사용)
로그인 실패 정보 : /var/btmp
Syslog(syslogd/etc/syslogd.conf로그 수준): 로그 수준을 읽고, 로그를 기록
유형 emerg > alert > crit > err > warn > notice > info > debug
작업스케줄러 관리
Cron : 반복적인 프로세스 작업을 수행할때 사용하는 batch 프로그램 (/etc/crontab)
30**** root /home/test.txt : 30분 마다 test 실행
분 시 일 월 요일 사용자 실행명령
At : 한번만 실행
파일 무결성 검사
: 초기 상태 파일 정보에 대해 해시값 저장, 이후 비교
Tripwire (--init : 초기화, --check : 무결성 검사)
윈도우 클라이언트 및 서버 보안
파일 시스템(FAT,NTFS)
윈도우 클라이언트 및 서버 보안
파일 시스템 (FAT,NTFS)
윈도우 실행 프로세스
1. Wininit.exe : 윈도우 시작 프로그램
2. Services.exe : 윈도우 서비스 관리
3. Lsm.exe : 시스템관리작업,주요 함수 실행
4. Svchost.exe : 서비스를 관리하기위한 프로세스
5. Conost.exe : 키보드,마우스 입력 허용, 문자 출력 셸의 기본 기능 수행
공유폴더 (Net BIOS : 445)
공유폴더 확인 : net share
공유폴더 삭제 : net share /delete
레지스트리 : MS 운영체제에서 OS및 응용 프로그램 등에 필요한 정보를 저장하고 관리하기 위한 계층형 데이터 베이스
Key,Value,Data Type, Data로 이루어져 있음
루트키 (레지스트리 최상위 키)
1. HKEY_CLASSES_ROOT : 확장자,프로그램간의 연결 정보
2. HKEY_LOCAL_MACHINE : HW,SW 설치 정보
3. HKEP_USERS : 사용자 정보
4. HKEP_CURRENT_CONFIG : 디스플레이,프린터 정보
주요 레지스트리 키
버전 정보 : HKLM/SOFRWARE/Microsoft/Windows NT/Current Version
컴퓨터 이름 : HKLM/SYSTEM/ControlSet00X/Control/ComputerName/ActiveComputerName
시작프로그램 : HKEY_LOCAL_MACHINE/SOFTWATE/Microsoft/Current Version/Run
최근에 실행한 명령어 : HKU/{USER}/SOFRWARE/Microsoft/Windows/CurrendtVersion/Exlplorer/RunMRU
이벤트 로그 및 웹 아티팩트 분석
윈도우 이벤트 로그 : 이벤트 뷰어를 통해 확인가능.
웹 아티팩트 분석 : 사용자가 웹 사이트를 이용한 흔적을 분석 하는 것 ( 웹 브라우저 캐시, 히스토리,쿠키)
바이러스 (자가복제 가능) VS 악성코드 (자가복제 불가능)
세대 별 바이러스
1세대 (원시형 바이러스) : 고정된 크기 주기억장치에 상주하여 감염(돌 바이러스, 예루살렘 바이러스)
2세대 (암호화 바이러스) : 프로그램을 암호화 시킴, 암호화방식이 일정하여 복호화 방식 쉬움 (폭포 바이러스,느림보 바이러스)
3세대 (은폐형 바이러스) : 다른 실행파일에 기생 감염시 백신을 속여 감영 여부 확인이 어려움 (맥가이버 바이러스,브레인 바이러스)
4세대 (갑옷형 바이러스) : 10만개 이상의 암호화기법을 사용하여 은폐 (다형성 바이러스,자체변형 바이러스)
5세대 (매크로 바이러스) : 매크로 명령을 사용하는 프로그램을 감염, 누구나 쉽게 생성/배포 가능(Melisa 바이러스 Nimda 바이러스)
악성코드
Shellcode : 작은 크기의 코드로 소프트웨어 취약점을 이용하는 기계어 코드
HeapSpray : 셸코드를 힘영역에 뿌리는 것 전역변수를 이용한다.
예방 방법 (ASLR설정 - 메모리 동적 주소 할당)
Sysctl - w kernel.radomize_va_space=1
버퍼 오버플로우 : 프로세스가 사용가능한 메모리 공간을 초과해 발생되는 공격
스택 오버플로우 : 스택에 저장되어있는 복귀주소가 지역변수에 의해 침범
비권고 함수 : strcpy,strcat,getwd,gets,scanf,sprint
권고 함수 : strncat,strncpy,fgets,fscanf,vfscanf,snprintf
힙 버퍼 오버플로우: 동적으로 할당되는 공간이 힙에 저장되어 경계값을 검사하지 않고 사용시 메모리가 경계를 초과
APT : 특정 공격들을 SNS를 사용하여 지속적으로 수행하는 공격