전체 글(185)
-
운영체제 공부 4 - scheduler 3 ( 멀티프로세스 scheduler )
[ 시작하기 전에 ] 사실 이 부분만 정리를 해도 되는데 예전 내용을 복습하는 김에 앞을 설명했었다. 아마도 멀티 프로세스 환경에서의 프로그램 성능에 대한 고민은 이 부분을 이해하면 더 쉽게 할 수 있지 않을까란 막연한 생각에 시작을 했고 이 부분에 대해 설명을 하려고 한다. 약간의 정리를 하자면, 싱글 CPU 상황에서 여러 프로세스를 작업하면 생기는 문제점은 CPU 내에 있는 cache의 이점을 살리기가 어렵다는 점, 프로세스의 생성과정에서 생기는 오버헤드 그리고 프로세스가 context switch가 일어날 때의 오버헤드가 있다. 그렇다면 멀티 CPU 상황에서는 어떻게 Scheduling이 일어나야지 멀티프로세스 작동에서의 장점을 가질까? [ 멀티 CPU 상황 ] 멀티 CPU 상황에서 여러 프로세스가..
2023.12.28 -
Primitive Type과 Wrapper Class
[ 작성이유 ] 스트림을 공부하던 중 Stream와 IntStream의 속도성능 차이에 관해서 보게 되었다. 그런데 가만히 생각해보니 int랑 Integer 둘 다 정말 많이 쓴 것 같은데 뭔 차이가 있는지 정확하게 모르고 사용하고 있는게 아닌가 싶었다. 그래서 이 내용을 정리하고 스트림에 관해서 다시 공부를 하려고 한다. [ 고민거리 ] Java에서 프로그램을 짜다보면 굉장히 많은 상황이 발생한다. 가장 많이 사용하는 순간을 예시로 들어보자. for(int i = 0 ; i < 10 ; i++){ System.out.println("시간이 " + i + "초 경과했습니다."); } 간단하게 위와 같은 코드가 있다고 생각을 해보자. 사실 이 상태는 굉장히 이상한 상태이다. 파이썬이나 다른 언어였으면 에러..
2023.12.23 -
운영체제 공부 3 - Scheduler 2(CFS)
[ 시작하기에 전에 ] CFS 알고리즘은 이전 배경지식에서 말했던 대부분의 문제를 해결하고 상당히 합리적인 Scheduling을 가능하게 해준다. 이를 이해하기 위해서는 프로세스의 state에 대해서 이해를 해야하고 이전 priority에 따른 scheduling에 관해서 이해하고 있으면 조금 더 이해가 쉽다. [ CFS 알고리즘 ] CFS는 운영체제 공부 3에서 말한 모든 상태들에 대해서 괜찮은 답을 내준다. CFS에서 알아야 될 개념은 Weight, time slice, vruntime이다. Weight는 priority에 따라 프로세스 자체가 가지는 비중을 의미한다. wieght에 따라서 time slice의 값과 vruntime에서의 값이 결정되게 된다. MLFQ에서의 Priority와 뭐가 다른..
2023.12.21 -
운영체제 공부 2 - Scheduler 1(배경지식)
[ 작성 이유 ] 운영체제이 미치는 영향 중 프로그램의 성능과 가장 관련이 있는 게 Scheduler가 아닐까 싶다. 우선 이것에 대해서 잘 이해하고 싶다면 메모리의 계층 구조와 프로세스의 state에 관한 지식을 알고 있어야지 이해가 쉬울 것이라고 생각한다. 배경지식을 설명한 후에는 Scheduler에 관해서 설명을 하겠다. 많은 Scheduler가 있지만 간단하게 기존 Scheduler의 문제점만 이야기를 하고 넘기고 가장 핵심인 CFS scheduler와 Multiprocessor Scheduling에 대해서 알아보면 왜 쓰레드의 개수와 작업 속도가 꼭 비례하지 않는 지를 알 수 있다. 책에선 Process로 설명을 하니 프로세스로 설명하지만 이건 쓰레드에도 적용이 된다. [ 배경지식1 - 메모리의..
2023.12.21 -
운영체제 공부 1 - Process와 Thread
[공부 이유] 운영체제 전공이 끝난 지 1년 정도가 되었고 대부분의 내용을 까먹은 것 같다는 생각이 든다. 모든 내용을 다 정리하는 것은 시간적으로 불가능하다고 생각이 되고 학교에서 배운 교안과 인터넷 검색 내용 중 나에게 반드시 필요하다고 생각되는 부분만 조금 정리를 해보려고 한다. 이게 끝나면 Java Thread 프로그래밍을 따로 공부하는 중인데 상관 관계를 적는 방식으로 사용하기에 좋을 것 같다고 생각이 돼서 정리를 남긴다. 운영체제와 관련된 내용은 모두 C언어로 진행이 되었어서 코드는 C를 사용할 것 같다. [프로세스] 제일 먼저 알아야 될 것은 프로세스에 관해서 알아야 하지 않을까 싶다. 사전적 의미는 "컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램", "메모리에 올라와 실행되고 있는 프..
2023.12.21 -
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 5장 Config 세팅
[작성이유] 예전에 교내 프로젝트를 했을 때에도 Spring Security를 이용했을 때에 Deprecated된 WebSecurityConfigurerAdapter를 사용해서 SecurityConfig를 작성을 했었다. 불과 2달 전까지만 해도 start.spring.io에 들어가면 Spring 2.7까지 지원을 했고 3.X이전 버전에서는 해당 함수가 검색이라도 되지만 3.X버전이 넘어가면 완전히 삭제돼서 사용자체도 불가능하다. 지난번에 넘긴 것도 찝찝했고 이번에는 spring 3.0 이상으로 하는 김에 WebSecurityConfigurerAdapter를 사용하지 않고 제대로 SecurityConfig를 작성하는 방법을 알아보았다. [기본코드] Security Config는 Spring Securit..
2023.12.20