https://radderveloper.tistory.com/108 #5 프로그램과 프로세스 ● 도입 프로그램이란? - 하드디스크와 같은 저장 장치(HDD, SSD)에 저장된 명령문의 집합체 - application, app 이라고도 불리고 Window OS에서는 .exe 파일의 모습을 하고있다. 프로세스란? - 간단히 말해 radderveloper.tistory.com - 위의 글을 먼저 읽어보자 ● 프로그래밍 언어의 종류와 프로세스 메모리 구조 1) 프로그래밍 언어의 종류 - 프로그래밍 언어는 컴파일 언어와 인터프리터 언어로 구분할 수 있다. 1. 컴파일 언어 - 개발자가 코드를 작성하고 컴파일 과정을 거쳐 0과 1로된 기계어로 실행파일을 만든다. - 컴파일 과정에서 문법 오류가 있는지 검사하고 CP..
※ 세마포어든 모니터든 이것이 프로세스 수준에서 일어나는 것인지 Thread 수준에서 일어나는 것인지 깊게 신경쓰지 말자 ※ 우선은 세마포어와 모니터 그 자체의 원리를 이해하는 것에 초점을 맞추자 - 모니터는 세마포어의 단점을 해결한 상호 배제 메커니즘이다. - 모니터는 운영체제(OS)에서 처리하는게 아니라 java, C# 같은 프로그래밍 언어 차원에서 지원하는 방법이다. - java 코드를 예시로 모니터에 대해 알아보자 public class Health { private int health = 100; synchronized void increase(int amount) { health += amount; } synchronized void decrease(int amount) { health -= ..
- 아래의 글을 먼저 읽어본 후 세마포어 글을 읽어보자 2023.05.09 - [운영체제] - #20 프로세스 동기화 - 공유자원과 임계구역● 세마포어 예시 - 상호 배제(Mutual Exclusion) 메커니즘의 한 가지인 세마포어에 대해 알아보자 ex) 세마포어 예시 - 회사에서 직원들은 맡은 업무에 대한 문서 작업을 마치면 프린터로 결과물을 출력한다. - 이때 프린터는 네트워크를 통해 여러 PC와 연결돼있는 상태이다. 즉, (프린터 = 공유자원)이다.- 직원A와 직원B가 동시에 프린터 출력을 한다고 할 때 직원A의 컴퓨터와 직원B의 컴퓨터는 프린터를 차지하기 위해서 경쟁 조건(Rase Condition)이 되버린다.(서로 내가 먼저 출력하겠다고 하는 상태) - 이러면 직원 A의 결과물과 직원B의 결..
● 프로세스 통신 - 프로세스는 독립적으로 실행되기도 하지만 다른 프로세스와 데이터를 주고 받으며 통신을 하는 경우도 있다. - 여기서 '통신'은 2가지가 있다. 1. 하나의 컴퓨터 내에서 실행되는 다른 프로세스와 통신 2. 네트워크로 연결된 다른 컴퓨터에 있는 프로세스와 통신 ● 프로세스 간 통신 종류 1. 하나의 컴퓨터 내에서 서로 다른 프로세스 간 통신(파일과 파이프를 이용한 통신) - 파일 : 통신을 하려는 프로세스들이 하나의 파일을 이용해 내용을 읽고 쓰는 방법이다. - 파이프 : OS(운영체제)가 생성한 파이프를 이용해 데이터를 읽고 쓰는 방법이다. 2. Thread를 이용한 통신 ※ 내용을 보면 이건 Thread 간 통신인데 이게 프로세스 간 통신이 맞나 강사에게 질문을 올렸는데 Thread..
● 도입 - OS가 작업을 처리하는 단위를 프로세스라고 하며 사용자가 OS에게 작업을 요구하는 만큼 프로세스의 수도 늘어난다. - 프로세스를 생성하면 각 프로세스 당 PCB가 생성되고 메모리에 코드, 데이터, 스택, 힙영역 등을 만들어줘야한다. - 따라서 프로세스의 수가 많아지면 그 수 만큼 PCB, 코드, 데이터, 스택, 힙영역을 만들어줘야 하기에 너무 무거워진다. ex) - 크롬 브라우저는 탭 1개 당 1개의 프로세스가 생성된다. - 100개의 탭을 열면 100개의 프로세스가 생성되는데 이렇게 되면 웹 브라우저가 메모리를 너무 많이 차지하게 된다. - 웹 브라우저의 탭들은 서로간의 통신을 위해 IPC(Inter Process Communication)를 이용하는데 IPC는 통신 비용이 상대적으로 많이..
● 도입 - 일반적으로 프로세스가 생성될 때 아래와 같은 과정으로 생성된다. 1. .exe 파일을 더블 클릭해서 실행 2. OS가 해당 프로그램의 코드 영역과 데이터 영역을 메모리에 로드하고 빈 stack과 빈 heap을 만들어 공간을 확보한다. 3. 해당 프로세스 관리를 위한 PCB를 만들어서 값을 초기화한다. (프로그램이 메모리에 올라갔으므로 프로세스라고 부른다.)- 위에서 설명한 프로세스 생성 과정은 OS가 부팅된 후 0번 프로세스가 생성될 때 딱 한 번만 실행된다. - 나머지 모든 프로세스들은 새로 생성하지 않고 0번 프로세스를 복사해서 사용하게 된다. - 복사에는 fork() 함수를 사용한다. - 아래 그림의 1번, 2번, 3번 프로세스 모두 0번 프로세스를 복붙해서 생성된 프로세스들이다. - ..
- Total
- Today
- Yesterday
- 코테
- 알고리즘
- 프로그래머스
- SQL
- Phaser3
- 운영체제
- Spring Boot
- db
- DART
- MongoDB
- Advanced Stream
- nosql
- jpa
- 프로세스
- 자료구조
- OS
- 메모리
- 코딩테스트
- java
- API
- node.js
- spring
- Phaser
- 빅데이터
- Java8
- git
- SpringBoot
- Stream
- 빅데이터 분석기사
- MySQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |