운영체제
배운 내용: 디스크의 내부구조 설명, 디스크 스케줄링 알고리즘
- Disk service time
- Seek time: 디스크 헤드가 원하는 데이터를 찾기위해 트랙으로 이동하는 시간, 보통 디스크 시간으로 취급
- Rotational Delay: 평균적으로 반바퀴, 헤드는 기다리고 플래터가 돌아서 다시 만나는 데 까지 걸리는 시간, RPM으로 표기
- Data transfer time: 디스크에 있는 데이터를 메모리로 이동
저장장치
- 하드디스크
- SSD: 비휘발성, nvm, 디스크보다 신뢰성이 높음
- Magnetic tape: 디스크보다 이전에 사용되던 저장장치, 대량의 데이터 보관, 백업 용도로 사용, 느림, 대용량
- NAS: NFS-> 유닉스, CIFS -> 윈도우
디스크 스케쥴링 알고리즘: Seek time, Rotational delay를 최소화, rpm은 고려하지 않고 헤드가 얼마나 조금 돌아가는지를 고려한다.
- FCFS: 먼저온거 먼저처리
- SSTF: 그리디 알고리즘 사용, starvation 발생, 반복을 여러번 한다, 현재 디스크의 헤드 위치에서 가장 가까운 실린더에 대한 요청을 우선적으로 처리.
- SCAN: 디스크의 한 쪽 끝에서 반대쪽 끝으로 이동하면서 처리하며, 마지막 실린더에 도착하면 반대 방향으로 스캔을 진행
- C-SCAN: 디스크의 한 쪽 끝에서 반대쪽 끝으로 이동하면서 처리하며, 마지막 실린더에 도착하면 시작점으로 되돌아간 후 다시 스캔을 진행
디스크 관리
- physical formatting (low-level formatting)
디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정이다.각 섹터는 header와 실제 data와 trailer로 구성되어 있다.header와 trailer는 sector number ,ECC(error-correcting code)등의 정보가 저장되면 컨트롤러가 직접 접근 및 운영을 한다.
- partitioning
디스크를 하나 이상의 실린더 그룹으로 나누는 과정.OS는 이것을 독립적 디스크인 logical disk로 취급한다. 파티션마다 파일 시스템을 만든다.
- logical formatting
파일 시스템을 설치하는 것
파일에 대한 정보 -> inode.FAT, inode, free space등의 구조를 포함.
Modern I/O system
I/O시스템은 종류가 다양하다.
- interrup
- polling: 지속적으로 체크
→ 둘이 같이 사용하기도 함
- port I/O
- Memory-mapped I/O: 메모리 주소를 매핑, I/O를 위해 할당
Device
- block: 블락 단위로 데이터 전송
- character: 모아서 하면 안되는 경우 ex) 키보드 같은 경우 바로바로 보여줌
- network
blocking과 nonblocking
커널
소프트웨어 공학
지난 주: dependablility에 대해서 배움
이번 주: Reliability Engineering
배울 내용: Availability and reliability, reliability requirements, programming for reliability
Software reliability: 소프트웨어를 믿을 수 있을 지 고려한다.
프로그램에 생긴 오류를 non-critical하다고 판단하면 게임을 출시후 후폭풍을 뒷수습하는 경우가 있다.
fault: 프로그램에 생긴 오류
error: fault로 인해 발생한 문제를 error라고 함
failure: error를 수습하지 못한 상황
→ fault와 failure의 용어를 사용을 구분해야한다. fault가 발생한다고 무조건 에러발생은 아님
fault management
- fault avoidance: 최대한 발생안하도록 처리한다
- fault detection: 자동화 오토매틱툴을 사용, fault를 찾아낸다.
- fault tolerance: fault에 프로그램이 잘 버틸 수 있도록 설계한다
→ fault를 최대한 줄이기 위해 노력한다. fault가 있다고 증명하는 것은 쉽지만 반대로 없다고 증명하는 것은 어렵다.
Availability and reliability: 둘이 깊은 관련이 있어서 하나가 떨어지면 다른 하나도 같이 떨어진다
reliability: 시스템이 원하는 대로 돌아가는 것데 대한 성질 → specification대로 동작하는지 → verification과 연관
→ 위의 두개는 숫자로 나타내기 쉬움
perception of reliability: 제대로 반영하기 어려움, 사람마다 reliability에 대해서 다르게 느끼는 문제
availability perception: 사용하는 유저수와 사용시간에 따라서 영향을 받음, 추가로 특정시간이나 어떤 주기로 사용하는 지에 대해서도 영향 받음
Reliability requirement
- system reliability requirements
- fuctional reliability
Reliability metrics: se철칙인 현재상황에 맞는 것을 가져다 쓰는 것과 관련
POFOD: 시스템이서 제대로 응답하지 못하는 경우, 요청을 무시당하는 경우
ROCOF: failure가 일어날 비율, MTTF의 역수
MTTF: 한번 failure가 발생하고 다음 failure가 발생하기까지의 기간
Availability
avail: 항상 가동중이고 항상 응답해야하는 시스템에서 사용, ex) 웹사이트
non-fuctional reliability requirement: MTTF보고 요구사항 정리 → 이점: redundancy 확보에 유리
Reliability 확보를 위한 programming
dependable programming
가이드라인
- information hiding: visibility를 잘 설계해서 다른 사람들이 알아볼 수 있도록 정리
- 메소드, 펑션 작성시 주의: public 메소드의 경우 주의를 해서 작성해야한다
- fault tolerance와 관련: ex) 자바의 경우 에러메세지를 강제적으로 작성해야함
- ex) goto, FP(floating point number), pointer를 사용하지 않는다
- 프로그램 진행하다가 특정지점으로 이동하기 쉽도록 설계한다
- dynamic memorry allocation에서 배열에서 벗어나지 않도록 한다.
- 외부라이브러리 사용
- 상수를 사용할때 주의 한다 ex) PI
Safety engineering
safety와 reliability: 둘이 밀접환 관련을 가지고 있다. 하지만 unsafe하지만 reliable한 시스템도 있고 reliable하지만 unsake한 경우도 있다.
Hazard: 사고로 일어날 수 있는 조건, 발생할 가능성과 피해를 포함
Risk: hazard의 발생 가능성과 피해를 고려해서 risk가 얼마나 발생하는지 고려한다.
Safety specification
Hazard-driven analysis
- hazard identify
- hazard assessment
- hazard analysis
- safety requirement specification
Hazard assessment: hazard의 위험성을 분석
→ hazard avoidance, detection, limitaion을 섞어서 대처해야함
hazard analysis
- Inductive, 바텀업: 사례를 모아서 결론을 냄
- deductive, 톱다운: 연역,추론
대학생을 위한 시사
상속세 논쟁
세금의 종류
- 명목세율: 법형식적으로 규정된 세율
- 실효세율: 명목세율에서 여러 공제를 받고난 후 실질적으로 납부하는 세율
조세 규모가 큰 순서
소득세(Income Tax)>부가세(VAT, 간접세, 세금에 대한 저항이 낮음)>법인세
그외의 세금들: 재산세, 상속세, 증여세, 특소세, 교육세
우리나라의 재벌: 족벌적 지배구조
스웨덴: 상속세가 낮은 대신 소득세가 높음, 족벌적 구조 → 발렌베리식 구조(회사의 수익이 개인에게 가지 않고 사회로 돌아감)
복지 사각지대 이슈: 복지신청주의 → 한계, 보완 필요
국제 이주와 다문화 사회: 문화적인 충돌이 심함
제노포비아: 이방인에 대한 혐오 현상
다양성의 힘: 이민자들, 다양한 지식과 분야들끼리의 공학의 융합을 기대
탄소 중립논쟁
한반도의 기후변화
탄소중립으로인한 기후변화를 부정하는 문제
시스템 프로그래밍
Arithmetic 연산- 곱셈, 나눗셈
Mul instruction - unsigned: 피연산자를 하나만 필요, register나 memory중 하나
비트에 따라 대응하는 레지스터가 다름
8비트: al로 고정, 결과는 ax에 저장
16비트: ax로 고정, 결과는 dx (상위 2개 바이트 ) : ax (하위 2개 바이트) 에 나눠서 저장
32비트: eax로 고정, 결과는 edx(상위 4바이트), eax(하위 4바이트)에 나눠서 저장
Mul연산에서는 오버플로우 발생X
carry flag, overflow flag는 상위 반쪽으로 넘어갈 경우 세팅됨 → 세팅되어 있지 않으면 뒤에 부분만 봐도 됨
IMUL - signed 곱셈,
- single-operand formats: 연산 결과가 앞의 mul과 동일 부호 맞춰주는 것만 추가됨
- double-operand formats: 앞에는 무조건 레지스터, 계산 결과가 첫번째 피연산자에 저장됨, 두 피연산자의 크기가 같아야함, 다만 앞에 상수면 예외적으로 8비트도 가능하다, 값이 넘어가면 cf,of가 세팅된다, 피연산자가 한개이면 상수 사용이 불가능하다, dest의 사이즈가 고정된다 → truncate, 하위 116바이트만 고려하며 넘치는 바이트는 버린다.
- triple-operand formats: 피연산자 사이즈 맞춰줌, 다만 상수오면 8비트 사용가능, 뒤에 오는 2개 곱해서 첫번째 피연산자에 저장
→ unsigned연산, signed연산 둘다 같이 사용가능하고, 연산결과도 같다 다만 signed에서만 truncate가 발생한다.
나눗셈
Div - unsigned devide
레지스터 or 메모리 크기 지정된 피연산자 나누는 숫자 결과 저장 나머지 저장
8비트 | ax | 8비트 | al | ah |
16비트 | dx, ax | 16비트 | ax | dx |
32비트 | edx, eax | 32비트 | eax | edx |
Div - signed devide: 값을 두배해서 넣어주고 sign을 맞춰 주어야함
컴퓨터 네트워크
Chapter 10. 응용계층
p2p, 클라이언트, API, 소켓, TCP, UDP, SCTP
웹 클라이언트
URL
HTTP
영속적 VS 비영속적
- 영속적: 초기방식, 하나하나씩 데이터를 가져옴, 오버헤드 발생, 비효율적
- 비영속적: 한서버에 데이터가 다 있을 경우 한번에 다 가져옴
요청과 응답메시지의 형식
메소드
쿠키
제어연결
데이터 연결
전송모드
'공부 > 컴퓨터 공학, 학교 공부' 카테고리의 다른 글
Chat GPT와 컴퓨터 보안: 도구인가 위협인가? (1) | 2023.10.31 |
---|---|
게임과 인문학 2차시 수업 정리 (0) | 2023.09.24 |
5월 첫째주 학교 공부 정리 (0) | 2023.05.07 |
4월 마지막 주차 학교 공부 정리 (0) | 2023.04.30 |
소프트웨어 공학 파이썬 퀴즈 (0) | 2023.04.09 |