일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- spring
- Stack
- JPA
- 이스티오
- gradle
- SpringBoot
- 스프링
- jvm
- Real MySQL
- thread
- 보조스트림
- 토비의 스프링 정리
- 스트림
- redis
- MSA
- list
- OS
- mysql
- 자바 ORM 표준 JPA 프로그래밍
- K8s
- Stream
- 자바
- Collection
- 토비의 스프링
- Kotlin
- 백준
- 쿠버네티스
- IntellJ
- GC
- Today
- Total
목록OS (5)
인생을 코딩하다.
독립적인 프로세스는 데이터를 공유할 일도 없고, 메시지를 주고 받을 일도 없기 때문에 문제가 발생하지 않는다. 그냥 따로 메모리 영역을 가지고 있고, 자기 일을 자기가 알아서 한다. 이럴 경우에는 CPU 스케쥴링을 잘해주면 영향을 안 미치고 자기들끼리 잘 공존한다. 하지만 문제는 협력적인 프로세스일때 문제가 발생한다. 우선 프로세스 간의 협력이 필요한 이유는 정보 공유 (Information sharing) : 여러 사용자가 동일한 정보를 필요로 할 수 있다. 계산 가속화 (Computation speedup) : 특정 작업(task)를 빠르게 실행하기 위해, 해당 작업을 부분 작업(서브 태스크)으로 나눠서 병렬로 실행하게 할 수 있다. 모듈성 (Modularity) : 특정한 시스템 기능을 별도의 프로..
커널 수준의 쓰레드 쓰레드 패키지를 운영체제에서 관리한다. 각 응용 프로그램들은 운영체제에 영향을 많이 받게 되므로 이식성이 낮다. 사용자 수준의 쓰레드 쓰레드 패키지를 사용자 영역에 두고 운영체제 커널은 단일 프로세스만을 관리한다. 쓰레드 패키지를 런타임 시스템에서 운영한다. 운영체제 입장에서는 런타임 시스템도 하나의 프로세스로 인식한다. 쓰레드를 운영하지 않는 운영체제제에서 실행할 수 있으므로 이식성이 뛰어나다. 쓰레드 운영 방식 @커널 수준의 쓰레드 @사용자 수준의 쓰레드 커널 개입이 크다. 커널 개입이 작다. 런 타임 시스템이 필요 없고 커널이 직접 한다. 런 타임 시스템이 필요하다. 속도가 느리다. 속도가 빠르다. 문맥 교환이 많다. 문맥 교환이 적다. 독자적 알고리즘이 필요없다. 독자적 알고리..
프로세스가 수행 중에 다른 프로세스를 수행하기 위하여 현재 수행 중인 프로세스를 중단하거나 외부 입력장치에 의해 프로세스가 중단되는 상태를 인터럽트라고 한다. 사용자에 의해서 새로운 프로그램이 실행 될 때, 현재 실행 중인 프로세스의 상태를 잠시 중단하고, 새로운 프로그램을 실행 시키는 과정이다. 잠시 중단한 프로세스의 상태는 다시 실행을 시작하기 위해 중단되었던 시점의 정보를 저장한다. 인터럽트는 입출력 연산, 하드웨어 실패, 프로그램 오류 등에 의해서 발생한다. 인터러브가 발생한 경우, 진행 중인 프로그램의 재개에 필요한 레지스터 문맥을 저장한다. 레지스터 문맥은 PCB에 저장한다. 프로세스 상태 전이도 위의 그림에서 준비 상태, 실행 상태, 실행 상태 전, I/O 등 모든 중단 형태를 인터럽트라고 ..
왜 context Switching이 필요한가? 만약 컴퓨터가 매번 하나의 Task만 처리할 수 있다면, 해당 Task가 끝날때까지 다음 Task는 기다릴 수 밖에 없다. 그래서CPU가 Task를 바꿔 가며 실행하기 위해 Context Switching이 필요하게 되었다. context switching를 사용하면 멀티 프로세싱, 멀티 스레딩을 통해 빠른 속도로 응답할 수 있다. Context Switching은 "한 프로세스가 CPU를 차지하고 있을 때 우선순위가 높은 다른 프로세스가 현재 프로세스를 중지시키고 자신이 CPU를 차지할 수 있게 하는 선점형 프로세스" 방식이기 떄문에, 높은 우선순위를 가진 프로세스들이 빠른 처리를 요구하는 시스템에서 유용하다. 빠른 응답시간을 요구하는 시분할 시스템에 유..
운영 체제 1. 제어 프로그램(Kernel) 하드웨어를 제어하는 프로그램 메모리, CPU, 단말기, 프린터 등 시스템의 자원 활용도를 높이기 위해 스케줄링과 자료 관리를 하는 핵심 요소이다. 2. 명령어 해석기(Shell) 사용자의 명령을 입력받아 시스템 기능을 수행하는 명령 해석기 사용자와 시스템 간의 인터페이스를 담당하는 프로그램이다. 3. 매크로 어셈블리어를 사용하기 쉽도록 명령어들을 문자로 치환하여 확장해 준다. 메크로 라이브러리는 여러 프로그램에서 공통적으로 자주 사용되는 매크로들을 모아 놓은 라이브러리다. 매크로는 일정의 문자열 치환과 같이 사용된 횟수만큼 명령어를 생성, 삽입하여 실행한다. 매크로 내에 또 다른 매크로를 정의할 수 있다.3-1. 매크로 프로세서의 기본 기능 매크로 정의 인식 ..