[운영체제] 9. 페이징 메모리 관리
·
운영체제
메모리 관리 기법 중 페이징 메모리 관리 기법에 대해 더 자세히 알아보자. 페이징(Paging)이란?프로세스의 주소 강간을 0번지부터 페이지로 불리는 고정 크기로 나누고 물리 메모리 역시 페이지와 동일한 크기로 분할하여, 프로세스와 각 페이지를 물리 메미로의 임의의 페이지에 분산 할당하는 메모리 관리 기법이다. 여기서 물리 메모리 페이지 크기의 메모리 블록을 프레임(frame), 페이지 프레임(page frame) 등으로 부른다. 즉 프로세스의 메모리를 분할해서 관리한다는 것이고 메모리를 참조하려면 각 페이지의 위치를 기록해두어야 할 것이다. 그래서 프로세스마다 페이지 테이블이 존재하고 이를 통해 물리 프레임에 매핑된다. MMU 장치는 페이지 테이블을 이용해 논리 주소를 물리 주소로 변환하며,프..
[운영체제] 7. 교착상태
·
운영체제
교착상태란?교착상태라는 말은 프로그래밍 이외에서도 자주 사용되는 말이다. 차가 막혀서 도로에서 이러지도 저러지도 못하는 상황이라던가, 협상의 진전이 없는 상황이라던가 다양한 모습으로 교착상태를 떠올려볼 수 있다.  운영체제에서 교착상태는 자원을 소유한 스레드들 사이에서 각 스레드이 다른 스레드가 소유한 자원을 요청해 모든 스레드가 무한정 대기하는 상황을 말한다.  이는 다중프로그래밍의 고질적인 문제점이라고 할 수 있다. 운영체제는 스레드들에게 자원을 할당해줘아 햐는데 스레드는 하나의 자원만 필요한 것이 아니기 때문이다.   T1부터 T5까지 다섯 개의 스레드가 5개의 CPU에서 동시에 실행되면서 자원을 한개씩 소유하고 있다고 해보자. 그런데 이 상황에서 다른 스레드가 가진 자원을 요청하게 된다면 이때 교..
[운영체제] 6. 스레드 동기화
·
운영체제
스레드 동기화는 왜 필요한 것일까?간단히 말하면 다수의 작업이 공유 데이터에 접근하면 공유 데이터가 훼손될 수 있기 때문이다. 그리고 여기서 다수의 작업이란 프로세스의 작업을 수행하는 스레드라고 할 수 있다. 따라서 공유 데이터에 대한 스레드들의 동시 접근을 해결하는 것이 스레드 동기화의 목표라고 할 수 있다. 스레드 동기화를 위한 가장 간단한 해결 방법은 한 스레드가 공유 데이터 사용에 사용을 마칠 때 까지 다른 스레드가 공유 데이터에 접근하지 못하도록 막는 것이다.  공유데이터 훼손 문제 그런데 사실 이렇게 말로만 공유데이터가 훼손된다고 하면 뭐가 어떻게 훼손된다는건지 직접적으로 이해하기 쉽지 않다.  여기 sum = sum + 10이라는 연산을 수행하는 코드가 있다. 이를 기계 명령으로 보면 mov..
[운영체제] 5. CPU 스케줄링
·
운영체제
프로세스의 실행단위인 스레드를 실행할 때 어떤 스레드를 실행할지 스케줄링을 통해 선택된다고 설명해왔었다.  이제 그 스케줄링이 무엇인지 그리고 어떤 스케줄링 알고리즘들이 존재하는지 알아보자.  1. 스케줄링 개요 한정된 자원에 대한 경쟁이 있을 때 우린 누구에게 자원을 할당해줘야 할지 선택해야 한다. 즉 CPU 자원을 누구에게 할당할 것인지 결정하는 것이 CPU 스케줄링인 것이다. 여기서 선택의 대상이 되는 스레드는 '준비' 상태에 있는 스레드들이다.  스케줄링이 필요하게 배경에는 다중 프로그래밍의 등장이 있다. CPU가 쉬는시간인 CPU 유휴 시간을 줄이기 위해 만들어진 다중 프로그래밍 기법은 I/O이 발생하면 실행하고 있는 프로세스를 중단하고 다른 프로세스를 실행한다.  그런데 어떤 프로세스를 메모리..
[Spring 핵심 원리 이해] 3. 스프링 컨테이너와 스프링 빈
·
Spring
저번 시간에 애플리케이션 전체의 구성하는 AppConfig가 어떻게 제어의 역전과 의존관계 주입을 할 수 있는지그리고 스프링을 이용한 스프링 컨테이너와 스프링빈으로 AppConfig를 어떻게 활용할 수 있는지 알아보았다. 이번 시간에는 스프링 컨테이너와 스프링 빈에 대해서 조금 더 알아보도록 하자! 1. 스프링 컨테이너 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 이런 코드를 통해서 우리는 OrderApp과 MemberApp에 스프링 컨테이너를 활용했었다. 이 중 ApplicationContext를 우리는 스프링 컨테이너라고 한다. 그런데 ApplicationContext와 A..
[운영체제]1-2 운영체제의 태동
·
운영체제
지난 포스팅에서 운영체제가 무엇인지 알기 위해 운영체제의 개념에 대해 알아보았다. 그럼 이 운영체제는 어떻게 생겨나게 된 것일까?  1.  고정 프로그램 컴퓨터 시대 - 1940 년대이 당시 컴퓨터는 현재 우리가 사용하는 컴퓨터와는 상당히 다른 모습을 가지고 있다.이 시기는 소프트웨어라는 개념 자체가 존재하지 않고 컴퓨터의 모든 기능을 하드웨어로 만들었다. 이때의 컴퓨터는 단지 실행하고자 하는 하나의 작업을 수행하는 기계에 불과했다.  어떤 작업(이제 작업을 프로그램이라 부르겠다)을 기게에 심고 나면, 그 컴퓨터는 그 작업만을 수행할 수 있었다.즉 하나의 기계는 하나의 기능만을 수행할 수 있었던 것이다. 그렇기에 새로운 기능을 구축하는 일은 매우 어려운 일이었다. 당연히 CPU와 메모리의 개념이 분리되지..