본문 바로가기
Study/CS 전공지식 노트

[CS 전공지식 노트] 3장. 운영체제

by Nahwasa 2022. 12. 15.

스터디 메인

 

  이 스터디의 경우 이미 책의 내용이 매우 축약된 내용이므로 책 내용 정리는 크게 의미가 없다고 생각합니다. 따라서 스터디 정리는 추가로 설명한 부분에 대해 작성했습니다.

 

[ 3장 - 운영체제 ]

 

- 134 page

  이 책에 나온 수준은 단순히 개념만 알고 적당히 대답만 할 수 있는 수준임. 실제 개발에서 전반적인 시야를 넓히려면 별도로 공부하는게 좋음. 네트워크쪽은 책의 제목에 비해 일반적인 수준보다 더 써있는 것 같고(개발자한테 L4, L7의 차이를 물어볼 정도면 그냥 대답하지 말란 얘기가 아닐까..), 1,3,4,5장은 좀 빈약한 느낌이라 저자가 네트워크쪽 좋아하는 것 같음.

 

- 139 page

  레지스터는 CPU 내에서 연산 처리용이고, 캐시는 CPU와는 별도로 메모리와 CPU 속도 차이를 완화하는 역할.

 

- 144 page

  지역성 때문에 자바에서도 이론적인 자료구조의 시간복잡도와 다르게, 그냥 캐싱이 잘 되는 형태가 더 빠른경우가 있음. 예를들어 Queue 구현 시 이론적으론 LinkedList가 빠를 것 같지만, 실제론 배열 기반으로 구현된 ArrayDeque가 전반적으로 더 빠름.

 

- 147 page : 쿠키 관련

  로컬 스토리지는 자동 로그인을 생각하면 되고, 세션 스토리지는 비로그인 장바구니를 생각하면 됨.

쿠키의 경우, HTTP.는 기본적으로 요청-응답이 끝나면 연결이 끊어지는 무상태성이 특징임. 따라서 클라이언트의 상태를 서버가 아닌 클라이언트에 저장해두고 필요 시 서버에 전달해 보완해야함.

기본 로직은 '클라가 서버에 HTTP 요청 -> 서버가 응답 시 쿠키 전달 -> 클라이언트는 이후 쿠키를 담아 보냄' 임.

스프링, 스프링부트의 경우 외장 혹은 내장 톰캣에서 이 쿠키를 처리해줌. 그래서 스프링에서 별도로 사용자 정보를 유지하지 않아도 로그인을 페이지 변경될때마다 다시 안해도 됨.

 

- 147 page : 레디스 관련

  레디스는 인메모리에서 동작하므로 빠름. 키-밸류 형태로 데이터는 가지고 있음. 유튜브 조회수를 생각하면 좋은데, 실제 사용자가 영상을 볼 때 마다 DB에 update 치는건 매우 부하가 클 것임. 그래서 레디스 등을 중간에 사용해서 여기다가 어느정도 쌓아두고, 주기적으로 실제 DB에 업데이트 하는 것임. 세그먼트 트리 자료구조의 lazy propagation 생각하면 됨.

 

- 162 page

  자바의 경우 보통 스택, 힙, 메소드 영역으로 얘기하고 책의 정적 영역이 메소드 영역임. 메소드 영역에 코드 및 전역변수와 static 변수들이 있고, 힙은 new를 통해 생성된 객체, 스택은 함수 호출 시 지역변수 등이 들어간다고 보면 됨. 그래서 재귀 함수가 너무 많이 불릴 시 stack overflow 발생 (커뮤 아님)

 

- 173 page

  임계 영역에 대해 책의 설명이 애매한데, 그냥 코드 상에서 공유 자원에 접근하는 부분을 얘기한다고 보면 됨.

 

- 174 page

  뮤텍스는 공유 자원이 1개일 때 본인이 락을 걸고 들어가서, 본인이 락을 풀고 나와야 함. 음식점에서 열쇠 가지고 가야하는 화장실 생각하면 됨.

  세마포어는 동기화 대상이 1개 이상인 경우로, 뮤텍스와 달리 자원을 소유하는건 불가함. 지하철역 화장실 생각하면 됨. 한 번에 쓸 수 있는 사람 수가 정해져있음.

  모니터는 자바에서도 모니터로 제공되는데, 세마포어 직접 짜려면 복잡하니 쉽게 쓸 수 있게 인터페이스로 만들어둔거라고 보면 됨.

댓글