3.1. 운영체제와 컴퓨터

P. 134

OS(Operating System) = Kernel + System programs 

운영체제는 하드웨어와 사용자 사이의 중개 역할을 한다. (하드웨어를 관리하는 프로그램이라 볼수있음.)
애플리케이션에는 하드웨어를 관리하는 기능이 없다.(그래서 OS <--->App 상호작용 존재)

운영체제가 담당하는거 (요-------것-------들)
유저프로그램 <-- GUI 시스템콜 커널 드라이버  --> 하드웨어

운영체제 역할
1. CPU 스케줄링, 프로세스 관리
2. 메모리 관리
3. 디스크 파일 관리
4. I/O 디바이스 관리

Kernal: OS의 기본 알고리즘들을 구현해둔 로직
드라이버: 하드웨어를 제어하기 위한 소프트웨어

 

시스템콜

커널에 접근하기 위한 인터페이스.

@OS가 I/O 요청을 위한 트랩 발동시켰을때의 과정??

예를 들어 파일시스템의 파일을 읽는 함수 fs.readFile()이 I/O요청으로 들어온 경우,

올바른 I/O요청인지 확인을 먼저한 후,

유저모드에서 파일을 읽지 않고 시스템콜을 통해 커널모드로 들어가 파일을 읽고 다시 유저모드로 들어가 유저프로그램의 그 다음 로직을 수행.

==> 컴퓨터 자원에 대한 직접접근을 차단할 수 있어서 시스템의 안정성, 보안 향상


시스템콜로 분리가 되어있어서
커널모드로만 운영체제의 자원을 이용할수있게함.

modebit
구분하는 플래그임.


3.1.2 컴퓨터의 요소

P. 138

CPU, DMA컨트롤러,메모리,타이머,디바이스컨트롤러   (SW 중점으로 봤을때 이정도.)

DMA 컨트롤러
CPU에만 많은 인터럽트 요청이 들어오므로 부하를 막아주기 위해 존재.
하나의 작업을 CPU와 DMA컨트롤러가 동시에 하는거 방지.

 

DMA 컨트롤러 등장배경?

//

 

관리자 -> 커널- > HDD,SDD -> 메모리에 올림(RAM). -> CPU

CPU(제어장치(CU) + 연산장치(ALU) + 레지스터)
:인터럽트에 의해 단순히 메모리에 존재하는 명령어를 실행.
 
CPU의 연산처리
1. CU가 메모리에 계산할 값을 로드, 레지스터에도 로드
2. CU가 ALU에게 명령.
3. CU가 결과값 다시 메모리에 저장.

ALU(산술논리연산장치)
실행장치라고도 하며, 산술연산(덧셈,뺄셈),논리연산(AND,OR), 시프터, 보수기


인터럽트
어떤 신호가 들어왔을때 CPU를 잠깐 정지시키는 것을 말한다.
즉, CPU에게 멈추고 interrupt handler함수를 실행하라고 보내는 event이다.

 

사용이유:  CPU는 매우 빠른 장치인데, 프린터 문서 인쇄를 지시하고 완료될 때까지 기다리고만 있기에는 너무 성능이 아까움. 따라서 인터럽트를 발생시켜 그동안 다른작업을 하고 돌아올 수 있어서.

 

하드웨어 인터럽트

 I/O디바이스에서 발생(키보드,마우스연결)

 

소프트웨어 인터럽트

트랩이라고 한다.

종류: 예외상황, system call


★@인터럽트가 발생될때의 과정을 설명해라

 

3.2. 메모리

3.2.1 메모리 계층

P. 142

'로딩중' 이라는 메시지가 뜬다는건?
--> 하드디스크 혹은 인터넷에서 데이터를 읽어 RAM으로 전송하는 과정이 아직 끝나지 않았다는 뜻이다.


일반적인 instruction 수행 과정
1. Fetch : 메모리(Text부분)에서 CPU내부의 pc레지스터로 인스터럭션을 가져옴
2. Decode : 단순히 바이너리일뿐인 인스트럭션 해석
3. Fetch Operands : Argument에 메모리값이 필요할 경우 메모리에서 도 가져옴. (일어날수도 있고 아닐 수도 있음)
4. Execute : 실행
5. Store : 레지스터에 결과값 저장

이중에서 메모리 엑세스가 일어나는 단계
1.Fetch  - 이때는, 반드시 발생한다. 메모리에서 Pc로 인스트럭션 가져와야하므로.
3.Fetch Operands - Argument에 따라 메모리접근이 또 필요할 경우에만 발생.

매 인스터럭션 수행마다 메모리 엑세스를 해야하는지?
--> 캐시를 쓰면됨.



★캐시
CPU는 프로그램 실행과정에서 메모리에서 데이터를 빈번하게 가져오는데.
CPU 연산속도가 아무리 빠르더라도,
메모리에 접근하는 시간이 느리면 아무 소용 없지않은가!.. 그래서 나온게 캐시메모리.

빠른 장치와 느린 장치사이의 속도차이에 따른 병목 현상을 줄이기 위한 메모리.(데이터를 미리 복사해놓은 임시저장소)

캐시히트: 캐시에서 원하는 데이터 찾았을때
캐시미스: 캐시에 없어서 메모리로 가서 데이터 찾아올때

웹브라우저의 캐시
★쿠키 vs 로컬 스토리지 vs 세션 스토리지

 

쿠키 

 : 웹사이트에 의해 유저의 로컬에 놓여지는 작은 텍스트 파일들을 말함.

 

매서버 요청마다 쿠키가 같이 전송됨(HTTP 특징: stateless)  --> 필요없는 정보들도 같이 실어 보냄  --> 데이터 낭비 --> 이런 데이터들을 로컬스토리지, 세션 스토리지에 저장 (서버로 전송X)

 

예시: 사이트에서 방문한 페이지 저장, 유저의 로그인 정보 저장, 사용기록 기반으로 사용자에게 관련영상이나 사이트 추천

 

유형: session 쿠키 - 만료일 있음. 브라우저나 탭이 열려있는 동안만 저장됨. 은행 사이트 자격 증명 저장에 사용

          persistent 쿠키 - 만료일 있음

 

쿠키 동작방식

  1. 클라이언트가 페이지를 요청
  2. 서버에서 쿠키를 생성
  3. HTTP 헤더에 쿠키를 포함 시켜 응답
  4. 브라우저가 종료되어도 만료 기간이 있다면 클라이언트에서 보관하고 있음
  5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
  6. 서버에서 쿠키를 읽어 변경해야할 필요가 있다고 판단되면 업데이트해서 변경된 쿠키를 HTTP 헤더에 포함시켜 응답

로컬 스토리지

쿠키와 달리 HTTP 요청에서 데이터를 주고받지 않아, 클라이언트와 서버간의 전체 트래픽과 낭비되는 대역폭의 양을 줄일 수 있습니다.

 

데이터 영구적 (javascript로 지워야함), 문자열 뿐아니라 원시값이나 객체도 저장 가능

 

사용예시: 자동 로그인

 

세션 스토리지

비영구적

사용예시 : 일회성 로그인

 

@쿠키, 로컬스토리지, 세션 스토리지에 대해 아는대로 설명?
쿠키는 매 http요청 마다 쿠키를 헤더에 포함하여 보내지만, 로컬스토리지나 세션스토리지는 보내지 않는다.

따라서 전체 트래픽과 대역폭 낭비를 줄일수 있다.

로컬스토리지는 영구적, 세션스토리지는 비영구적

3.2.2  메모리 관리

P. 148

가상메모리

 

MMU (Memory Management Unit)

가상주소를 실제주소로 매핑해주는 하드웨어 장치

동작

TLB


@페이지 폴트 과정

1. mmu가 트랩발생시킴
2. 
3.
4.
5. instruction 제개


★스와핑??
메모리에 적재된 프로세스들 중에 사용되지 않는 프로세스를 보조기억장치의 일부영역(스왑영역)으로 쫓아내고,
그렇게 메모리 공간 만들어, 다른 프로세스를 적재하여 실행하는 방식

스레싱?

@페이지와 프레임의 차이
 페이지는 가상메모리를 사용하는 최소크기 단위, 프레임은 실제메모리를 사용하는 최소크기단위


연속 메모리할당
-> 외부단편화 문제

★외부단편화
프로세스들이 메모리에 연속적으로 할당되는 환경에서는 프로세스 종료시 빈공간이 생기지만,
이러한 빈공간보다 큰 프로세스를 적재할수 없어서 메모리 낭비로 이어지는 현상을 일컬음

외부단편화의 근본적인 이유
각기 다른 크기의 프로세스가 할당

내부단편화
페이징은 외부단편화 문제는 해결할 수 있지만, 내부 단편화가 야기된다.
프로세스의 논리적인 주소공간을 똑같은 크기로 자르면 마지막 페이지는 프로세스의 크기보다 공간이 많이 남게 되므로. 메모리 낭비.

★★페이징?
프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자르고,
메모리 물리 주소 공간을 프레임이라는 일정한 단위로 자른뒤 페이지를 프레임에 할당하는 가상 메모리 관리 기법

불연속적으로 할당하다?는 말


★페이지 교체 알고리즘
가상메모리를 통해 작은 물리메모리 보다 큰 프로세스도 실행할수는 있지만,

물리메모리는 여전히 한정되어 있으므로 기존에 메모리에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내야함.
--> 페이지 교체 알고리즘 기반으로 스와핑이 일어남. (스와핑은 많이 일어나지 않도록 설계해야하니까)

-offline알고리즘
-FIFO : 메모리에 가장 먼저 온 페이지를 교체 영역에 먼저 놓는것
-LRU : 가장 오래 사용하지 않은 페이지 내쫓는거
(2개의 자료구조 써서 구현함 : 해싱테이블 + 이중연결리스트 )
-NUR : Clock 알고리즘. 다른 알고리즘들과 다르게 2개의 비트만 있으면 해결
-LFU : 가장 적게 참조한 페이지 내쫓음.


@★세션기반인증 vs 토큰기반인증

세션기반인증 로그인
:세션을 사용할때 쿠키를 사용함
쿠키는 단일 도메인에서 관리하게 되어있어서(?) CORS문제

멀티도메인
네이버 메인페이지 같은경우

토큰기반인증 로그인
: ex) JWT (노는게 제일좋아 티스토리)
JWT이란 인증에 필요한 JSON토큰 (헤더 내용 서명)
세션 하이재킹
 JWT단점: 보안에 취약(-> 그래서 refresh토큰)

'CS > 전공지식노트' 카테고리의 다른 글

CH2. 네트워크  (1) 2023.06.25

+ Recent posts