일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 쓰레드 라이브러리
- django-crontab
- custom annotation
- Spring
- hiberbate
- spring-data-jpa
- task_struct
- 운영체제
- python-socketio
- 문자열 리터럴
- @Header
- 도커
- rainbow table
- none이미지
- java.util.function
- strict stubbing
- 롬복주의점
- 프로세스
- 함수형 인터페이스
- OS
- functional interface
- FunctionalInterface
- Thread Multiplexing
- sql-mappler
- ReflectUtils
- Process
- Thread Library
- AOP
- SystemCall
- 문자열 불변성
- Today
- Total
목록CS/OS (6)
JH's Develog
이전 포스팅에 이어지는 글입니다. https://jhkimmm.tistory.com/14 [OS] 쓰레드란? - 쓰레드와 Parallelism/Concurrency 쓰레드란? 프로세스는 실행 중인 프로그램(text segment)이며 작업의 단위이고, 쓰레드는 프로세스 내부에 있는 일련의 Execution이며 하나의 프로세스는 하나 이상의 쓰레드를 가질 수 있습니다. 그 jhkimmm.tistory.com 유저레벨 쓰레드라고 해도 결국 실행하려면 시스템 콜을 사용해서 커널의 도움을 받아 프로세서에 할당 되어야 할텐데, 이전 포스팅에서 다룬 내용 처럼 유저 쓰레드와 커널 쓰레드가 분리되어 있다면 커널은 유저 쓰레드를 어떻게 다뤄야할까요? 여기에는 여러가지 모델이 있습니다. Multiplexing User ..
쓰레드란? 프로세스는 실행 중인 프로그램(text segment)이며 작업의 단위이고, 쓰레드는 프로세스 내부에 있는 일련의 Execution이며 하나의 프로세스는 하나 이상의 쓰레드를 가질 수 있습니다. 그리고 각 쓰레드는 프로세스 내부에서 code, data, files는 공유하지만 각자의 Program Counter, Stack, Register를 가집니다. 그렇다면 왜 쓰레드를 사용할까요? 쓰레드는 light-weight 프로세스라고 할 수 있으므로 프로세스를 생성하는 것보다 Overhead가 적고 높은 Parallelism(병렬성)으로 인해 높은 퍼포먼스를 기대할 수 있습니다. 프로세스의 생성은 resource-intensive하므로 Parallel하게 같은 task를 수행할 때 새로운 프로세스..
지난 포스팅에 이어서 프로세스에 대해 알아보겠습니다. PCB PCB(Process Control Block)는 프로세스를 표현하기 위한 자료구조이며 커널안에 존재합니다. PCB는 프로세스에 대한 아래와 같은 다양한 정보들을 담고 있습니다. Process state : New, Running, Wait등의 프로세스 상태 Program counter : 다음 인스트럭션의 주소 CPU register CPU scheduling info : Priority, 스케줄링 큐의 포인터, 스케줄링 파라미터들과 같은 스케줄링에 관련된 정보 Memory-management info : base & limit registers, Page table, Segment Table Accounting info : CPU사용량, P..
프로세스란? 프로세스는 실행 중인 프로그램(text segment)이며 작업의 단위입니다. 이뿐만 아니라 다양한 방식으로 표현할 수 있는데 Program Counter가 가리키고 있는 현재의 인스트럭션, 메모리안에 있는 컨텐츠(stack, heap, global variables) 또한 프로세스라고 할 수 있습니다.즉 프로그램은 passive한 개념이고 프로세스는 active한 개념이며 하나의 프로그램으로부터 여러개의 프로세스가 존재할 수 있습니다. 쓰레드와의 차이점 쓰레드는 프로세스 내부에 있는 일련의 Execution이며 하나의 프로세스는 하나 이상의 쓰레드를 가질 수 있습니다. 그리고 각 쓰레드는 프로세스 내부에서 code, data, files는 공유하지만 각자의 Program Counter, S..
OS의 디자인 디자인의 목표는 크게 User goal과 System goal로 나눌 수 있습니다. User goal은 쉬운 사용, 빠른 속도, 신뢰성, 쉬운 학습 등의 사용자 관점 목표이고, System goal은 구현의 용이성, 유지/보수의 쉬움, 유연성, 효율성, 오류에 견딜 수 있는 정도 등의 시스템 관점의 목표입니다. 이들은 Requirements가 확실하지 않고 명확한 해결법을 찾기 어렵습니다. 이때 가이드라인을 잡기 위해서 Mechanism과 Policy 개념을 알 필요가 있습니다. Mechanism은 HOW, Policy는 WHAT에 해당한다고 할 수 있으며 서로 독립적이어야 합니다. 예를 들어 "30일이 지나면 만료되는 패스워드"에서 Mechanism은 '비밀번호를 만료시키는 방법'이라고 ..
OS는 프로그램의 실행을 위한 환경과 서비스를 제공해줍니다. 즉 하드웨어와 소프트웨어를 관리함으로써 컴퓨터의 리소스를 효율적으로 사용할 수 있게 해주는 시스템이라고 할 수 있습니다. OS가 제공하는 서비스는 다음과 같습니다. 유저 인터페이스 : CLI, GUI 등 프로그램의 실행 : Load, Run, End I/O 작업 : Read/Write/Create/Delete/Search/List file 커뮤니케이션 : 컴퓨터와 컴퓨터 간 혹은 한 컴퓨터 내부의 다른 프로그램간의 커뮤니케이션 -> 기본적으로 네트워킹과 같은 의미입니다. Error Detection 리소스 할당 : CPU cycles, 메모리 공간, 메모리 대역 등 Accounting : 유저 혹은 프로세스가 얼마나 많은 리로스를 사용하는지 지..