일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 단계별로 풀어보기
- 자바스크립트
- X보다 작은 수
- 세 수
- 솔리디티
- if문 사용해보기
- 블록 체인
- 가상 화폐
- 비트 코인
- 이더리움
- 시험 성적
- 2448
- 더하기 사이클
- Remix
- Mist
- 알고리즘 문제풀이
- 별 찍기 - 11
- 백준
- Baekjoon
- 1546
- 10871
- for문 사용해보기
- 그대로 출력하기
- 함수 사용하기
- 1%d
- 10817
- 평균은 넘겠지
- 1110
- Dapp
- 1065
- Today
- Total
블링블링 범블링
프로세스/쓰레드 동기화는 여러 개의 프로세스/쓰레드가 공통으로 데이터에 접근하려고 할 때 발생하는 문제를 해결하는 방법이다. 동기화 부분은 스케줄링과 더불어 프로세스 관리에서 매우 중요한 부분을 차지한다. 세마포는 프로세스/쓰레드 동기화를 위한 도구 중 하나이다. 앞장에서 세마포의 원리에 대해서 알아보았는데 이번 장에서는 더욱 자세히 세마포에 대해 다루어보도록 하겠다. 쓰레드가 동작하는 공간에는 공통 데이터를 수정할 수 있는 임계구역이 존재한다. 쓰레드가 동작을 하면서 임계구역에 들어가게 되면 데이터를 수정할 수 있다. 쓰레드가 코드를 동작하는 도중에 acquire() 명령어가 실행되면 임계구역에 들어가라는 명령이므로 쓰레드가 임계구역에 들어간다. 임계구역에 있는 쓰레드는 release()라는 명령어가 ..
앞장에서 프로세스 동기화가 필요한 이유에 대해서 설명을 하였다. 은행계좌 문제를 통해 공통변수인 은행계좌에 대한 동시 업데이트가 발생하면 문제가 발생할 수 있다. 따라서 우리는 한 번에 한 쓰레드만 업데이트하는 프로세스 동기화가 필요하다. 이러한 문제를 임계구역 문제라고 한다. 여러 개의 쓰레드로 이루어진 시스템에서 각각의 쓰레드는 코드의 영역을 가지고 있는데 이 부분을 임계구역이라고 한다. 임계구역에서는 공통으로 사용하는 데이터를 바꾸거나 테이블을 업데이트하거나 파일을 쓰거나 하는 일을 할 수 있다. 앞의 은행계좌 문제로 설명을 하면 은행계좌에 대한 영역이 바로 임계구역이 되는 것이다. 임계구역을 영어로 하면 Critical section인데 Critical이라는 말이 치명적인이라는 것을 뜻한다. 따라..
쓰레드라고 하는 것은 프로그램 내부에 흐르는 맥, 흐름이라고 한다. 우리가 상위 언어 예를 들어 자바나 C로 프로그램을 작성할 때 메인 함수를 통해 각종 표현식이 돌아 프로그램이 끝이 나는 것을 “맥이 흐른다.”라고 한다. 기본적으로는 한 프로그램에 맥이 하나 흐른다. 하지만 한 프로그램에 2개 이상의 맥이 흐를 수 있는데 이것을 다중 쓰레드라고 한다. 하지만 다중 쓰레드는 실제로 맥이 빠른 시간 간격으로 스위칭을 진행하는 것이 여러 가지 맥이 동시에 진행되는 것이 아니다. 시간 간격이 매우 짧아 동시에 맥이 흐르는 것처럼 보이는 것이다. 현재 대부분의 프로그램은 다중 쓰레드이다. 예를 들어 웹 브라우저를 들면 화면을 출력을 시켜주는 프로그램 쓰레드가 있고 데이터를 읽어오는 쓰레드가 따로 존재한다. 두 ..
앞장에서 설명한 스케줄링의 종류가 3가지가 있었다. 하지만 그 중 CPU 스케줄링이 가장 중요하다고 할 수 있다. 이 점은 컴퓨터의 성능과 바로 직결되는 문제를 안고 있기 때문이다. 따라서 CPU 스케줄링이 어떻게 진행되는지에 대해 학습해 보고자 한다. CPU 스케줄링은 크게 두 가지의 특징으로 나눌 수 있다.선점하는 방식(Preemptive)과 비선점하는 방식(non-preemptive)이다. 선점하는 방식은 하나의 프로세스가 CPU를 할당받아 작업을 수행하고 있는 도중에 다른 프로세스가 새치기를 할 수 있는 방식을 말한다. 따라서 선점하는 방식을 사용하면 언제든지 CPU가 다른 프로세스에 할당될 수 있다. 하지만 비선점하는 방식을 사용하면 하나의 프로세스가 CPU 할당이 끝이 나야 다른 프로세스가 C..
운영체제가 하는 역할은 매우 많다. 하지만 프로세스 관리는 그 역할 중 가장 중요한 역할이라고 할 수 있다. 그러면 프로세스에 대해 먼저 알아보자. 프로세스는 실행 중인 프로그램이다. 하드디스크에 있는 프로그램이 메인 메모리로 적재되어 있을 때 프로세스라고 부른다. 프로세스는 다섯 가지의 상태 중 하나의 상태에 존재한다. 메인 메모리에 올라오는 상태인 new, CPU 할당을 받는 것을 기다리는 ready, CPU가 할당되어 작업을 수행 중인 running, I/O와 같은 CPU 외의 할당을 받아 기다리는 waiting, 이러한 모든 작업이 끝날 경우 terminated라는 상태에 존재하게 된다. 이러한 상태를 나타내기 위해서는 프로세스에 대한 모든 정보가 저장되어 있는 곳이 필요한데 그것이 PCB(Pro..
컴퓨터를 사용하는 환경은 다양하다. 특정 사람이 특정 컴퓨터만 사용하는 경우도 있겠지만 한 컴퓨터를 여러 사람이 동시에 사용하거나 한 사람이 여러 개의 프로그램을 동시에 실행하는 경우 한 사람의 고의 또는 실수로 다른 프로그램 전체가 영향을 받을 수 있는 환경이 만들어진다. 예를 들면 많은 사용자들이 같은 컴퓨터를 사용하고 있는데 특정 사람의 stop(컴퓨터 강제 종료) 명령어 실행하는 프로그램을 갑자기 실행시키면 모든 사용자가 하던 작업이 종료되어 큰 영향을 끼칠 수 있다. 이런 문제가 발생하지 않기 위한 보호 장치가 바로 이중 모드이다. 이중 모드는 사용자 모드와 관리자 모드로 두 가지의 모드를 가지고 있어서 이중 모드이다. 사용자 모드는 단순한 사용자 프로그램을 작동시키는 모드인 반면 관리자 모드는..
운영체제의 종류는 운영체제의 발전 과정을 보면 알 수 있다. 맨 처음의 컴퓨터는 운영체제를 가지고 있지 않았다. 사용자가 일일이 모든 상황을 컨트롤 해야만 컴퓨터를 사용할 수 있었다. 이런 점에서 매우 불편함을 느꼈고 컴퓨터 자체에서 관리를 해주는 프로그램을 만들 필요성을 있었다. 따라서 최초의 운영체제가 탄생했다. 처음에 나온 운영체제는 일괄처리 운영체제이다. 처리해야 할 데이터를 일정 기간 또는 일정량 정리하여 일괄 처리하는 것이었다. 하지만 일괄처리만으로는 불편함을 없앨 수 없었다. 그래서 나온 것이 다중프로세서 운영체제이다. 다중 프로그래밍 시스템에서 메모리에 더 많은 유저 프로그램을 가동시키고 싶었다. 또한 한 명의 유저 프로그램이 쉬면 다른 유저의 프로그램이 실행할 수 있도록 관리하여 CPU와..