[운영체제] 8. 메모리 관리
·
운영체제
메모리 계층 구조 https://camuscoding.tistory.com/8 [운영체제]1-2 운영체제의 태동지난 포스팅에서 운영체제가 무엇인지 알기 위해 운영체제의 개념에 대해 알아보았다. 그럼 이 운영체제는 어떻게 생겨나게 된 것일까?  1.  고정 프로그램 컴퓨터 시대 - 1940 년대이 당시 컴camuscoding.tistory.com운영체제에 대해 공부하며 '메모리'를 꾸준히 언급해왔고, 메모리 없이 운영체제를 설명하는 것은 불가능할 것이다. 폰노이만의 내장형 프로그래밍 개념부터 지금까지 메모리는 CPU와 함께 컴퓨터를 이루는 필수적인 부품으로 자리잡았다.  이제부터 그 메모리가 무엇인지에 대해 알아보도록 하겠다.  메모리란 CPU가 실행할 프로그램 코드와 데이터를 저장하는 물리 장치를 의미한..
[운영체제] 7. 교착상태
·
운영체제
교착상태란?교착상태라는 말은 프로그래밍 이외에서도 자주 사용되는 말이다. 차가 막혀서 도로에서 이러지도 저러지도 못하는 상황이라던가, 협상의 진전이 없는 상황이라던가 다양한 모습으로 교착상태를 떠올려볼 수 있다.  운영체제에서 교착상태는 자원을 소유한 스레드들 사이에서 각 스레드이 다른 스레드가 소유한 자원을 요청해 모든 스레드가 무한정 대기하는 상황을 말한다.  이는 다중프로그래밍의 고질적인 문제점이라고 할 수 있다. 운영체제는 스레드들에게 자원을 할당해줘아 햐는데 스레드는 하나의 자원만 필요한 것이 아니기 때문이다.   T1부터 T5까지 다섯 개의 스레드가 5개의 CPU에서 동시에 실행되면서 자원을 한개씩 소유하고 있다고 해보자. 그런데 이 상황에서 다른 스레드가 가진 자원을 요청하게 된다면 이때 교..
[Spring MVC] 스프링 MVC 패턴 정리
·
Spring
* 해당 포스팅은 김영한 강사님의 스프링 MVC 강의 1편을 보고 정리한 것입니다.  MVC 패턴이란? MVC는 Model, View, Controller를 줄인 말이다. 그럼 Model, View, Controller는 또 뭘까?  Model- 뷰에 출력할 데이터를 담아둔다. 모델은 뷰에게 필요한 모든 데이터를 담아서 전달해주고 이 덕분에 뷰는 비즈니스 로직이나 데이터 접근에 신경쓰지 않고 화면 렌더링에 집중할 수 있다.  View- 모델에 담겨 있는 데이터를 사용해서 화면을 그리는 일에 집중한다.  Controller- HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담아두는 역할을 한다. 즉 HTTP 요청을 받고 파라미터를 검..
[운영체제] 6. 스레드 동기화
·
운영체제
스레드 동기화는 왜 필요한 것일까?간단히 말하면 다수의 작업이 공유 데이터에 접근하면 공유 데이터가 훼손될 수 있기 때문이다. 그리고 여기서 다수의 작업이란 프로세스의 작업을 수행하는 스레드라고 할 수 있다. 따라서 공유 데이터에 대한 스레드들의 동시 접근을 해결하는 것이 스레드 동기화의 목표라고 할 수 있다. 스레드 동기화를 위한 가장 간단한 해결 방법은 한 스레드가 공유 데이터 사용에 사용을 마칠 때 까지 다른 스레드가 공유 데이터에 접근하지 못하도록 막는 것이다.  공유데이터 훼손 문제 그런데 사실 이렇게 말로만 공유데이터가 훼손된다고 하면 뭐가 어떻게 훼손된다는건지 직접적으로 이해하기 쉽지 않다.  여기 sum = sum + 10이라는 연산을 수행하는 코드가 있다. 이를 기계 명령으로 보면 mov..
[프로그래머스] 유연 근무제 자바 풀이 (JAVA)
·
알고리즘
https://school.programmers.co.kr/learn/courses/30/lessons/388351  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명 해당 문제에 주어진 인자는 총 3개이다. 각 직원들의 목표 시간(희망 출근 시간)이 들어있는 schedules 배열,직원들의 출근 시간이 들어있는 timelogs 이중 배열,그리고 시작 날짜인 startday 정수. (월요일 = 1, 화요일 = 2, ... 일요일 = 7) 이 문제의 목표는 직원들이 '주말을 제외'한 날에 목표시간 + 10의 시간보다 일찍 출근했는지를 알아내고목표시간보다 일찍 출근한 직원들의 수를 반환하는 것이다...
[운영체제] 5. CPU 스케줄링
·
운영체제
프로세스의 실행단위인 스레드를 실행할 때 어떤 스레드를 실행할지 스케줄링을 통해 선택된다고 설명해왔었다.  이제 그 스케줄링이 무엇인지 그리고 어떤 스케줄링 알고리즘들이 존재하는지 알아보자.  1. 스케줄링 개요 한정된 자원에 대한 경쟁이 있을 때 우린 누구에게 자원을 할당해줘야 할지 선택해야 한다. 즉 CPU 자원을 누구에게 할당할 것인지 결정하는 것이 CPU 스케줄링인 것이다. 여기서 선택의 대상이 되는 스레드는 '준비' 상태에 있는 스레드들이다.  스케줄링이 필요하게 배경에는 다중 프로그래밍의 등장이 있다. CPU가 쉬는시간인 CPU 유휴 시간을 줄이기 위해 만들어진 다중 프로그래밍 기법은 I/O이 발생하면 실행하고 있는 프로세스를 중단하고 다른 프로세스를 실행한다.  그런데 어떤 프로세스를 메모리..
[운영체제] 4. 스레드와 멀티 스레딩
·
운영체제
이전 포스팅에서 프로세스와 프로세스 생명주기 등 프로세스가 OS에 의해 어떻게 관리되는지 알아봤었다. 그리고 스레드가 프로세스보다 더 작은 단위로서 프로세스를 실행하는 단위가 된다는 것도 알아보았다. 그럼 이번에는 그 스레드가 도대체 무엇인지 더 자세히 알아보도록 하겠다.  4 - 1 프로세스의 문제점 컴퓨터가 처리하고자 하는 일의 단위를 작업(task)라고 한다. 이 task는 프로세스를 만들어내며,1980년대까지 Unix기반 OS의 실행 단위는 프로세스였다.  그런데 프로세스가 실행단위일 때 생기는 문제점이 존재했다.먼저, 1) 프로세스 생성에 걸리는 시간이 크다는 것이다. 이는 프로세스를 생성할 때 큰 오버헤드를 가져온다는 것을 의미한다. 이전에 알아보았지만 프로세스를 생성하는 과정은 메모리 할당,..
[운영체제] 3. 프로세스와 프로세스 관리
·
운영체제
3 -1. 프로그램과 프로세스이제 프로그램과 프로세스에 대해서 본격적으로 알아볼 때 가 된 것 같다.이 전에도 말했겠지만  프로그램은 하드디스크, USB등 저장 장치에 저장된 실행 가능한 파일을 말한다. 프로그램이 메모리에 적재되어 실행중일 때 이를 프로세스라고 부른다. 여기서 실행중이라는 것은 CPU에 의해 실행되거나, 준비 상태이거나, 실행 대기 상태이거나. 이 모든 상태를 실행 중이라고 말한다.  즉 OS는 응용프로그램을 메모리에 적재하고 ,이때 부터 프로세스라고 부를 수 있는 것이다.  프로세스의 특징을 알아보자.OS는 프로르램을 메모리에 적재하고 이를 프로세스라고 한다. OS는 프로세스에게 필요한 메모리를 할당하고 코드와 데이터들을 적재한다.프로세스는 서로 독립적인 메모리 공간을 갖는다(가상 메..