본문 바로가기

분류 전체보기72

[OS] 프로세스 동기화 임계 구역 문제(Critical Section Problem) n개의 프로세스가 있는 시스템에서 각 프로세스는 임계구역이라 불리는 코드의 일부를 가지고 있다. 한 프로세스가 임계 구역에 들어가면, 다른 프로세스는 아무도 임계구역에 들어갈 수 없다. 각 프로세스는 임계 구역에 들어가기 위해 entry section이라는 코드 부분에서 허가를 받아야 하고, 임계 구역 실행이 끝난 프로세스는 exit section을 지나 다른 프로세스들이 임계구역에 들어갈 수 있게 된다. 임계 구역 문제를 해결하기 위해서는 3가지 조건이 만족해야 한다. 상호 배제(Mutual Exclusion) : 만약 프로세스가 임계 구역에서 실행 중이라면 다른 모든 프로세스는 임계 구역에서 실행할 수 없다. 진행(Progress) : 만.. 2023. 9. 27.
[OS] CPU 스케줄링(CPU Scheduling) CPU 스케줄링의 필요성 프로세스는 CPU burst와 I/O burst 두 가지 상태로 순환하면서 작동한다. CPU burst : CPU 명령을 실행하는 것 I/O burst : I/O 입력을 대기하는 것 참고로 CPU burst가 큰 프로세스를 CPU bound process, I/O burst가 큰 프로세스를 I/O bound process라 한다. 프로세스는 위 사이클처럼 CPU burst와 I/O burst로 상태를 바꾸면서 동작하게 된다. 하지만 대부분의 프로세스는 CPU burst보다 I/O burst가 큰 I/O bound process이다. I/O burst 상태인 프로세스는 사용자의 입력이 있을 때까지 대기하기 때문에 CPU는 그동안 다른 일을 할 수 없게 된다. 이때 CPU를 할당하고.. 2023. 9. 20.
[OS] 스레드(Threads) 스레드(Threads) Threads란 프로세스 내에서 실행되는 흐름의 단위이다. 하나의 프로세스에 Threads가 하나 있으면 single-threaded process이고 여러 개 있는 경우 multi-threaded process라 한다. 이때 하나의 프로세스에 있는 Threads들은 code, data, files을 서로 공유한다. 멀티스레드의 장점 응답성(Responsiveness) 만약 유저 인터페이스 같이 중요한 곳에 프로세스의 일부가 block 되어도 실행을 계속할 수 있다. 하나의 스레드가 block 되어도 다른 스레드가 여전히 실행되어 사용자들에게 output을 제공할 수 있다. 자원 공유(Resource sharing 스레드는 공유 메모리와 메시지 전달 방식보다 더 쉽게 프로세스의 자.. 2023. 9. 14.
[Trouble Shooting] Spring Security를 사용하여 CORS 에러 해결방법 서버 배포 후 프론트엔드에서 API를 연동하기 위해 시도하던 중 누구나 한 번쯤 마주치는 CORS 에러가 발생하게 되었다. origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 스프링을 사용할 때 CORS 에러를 해결하는 방법에 대해서 여러 블로그를 검색하였더니 다음과 같은 코드를 추가해 주면 전역적으로 CORS 설정이 가능하다 하였다. @Configuration public class Web.. 2023. 9. 10.
[OS] 프로세스 프로그램 : 실행파일 같이 disk에 저장되어 있는 수동적인 존재 프로세스 : 다음에 실행할 명령어를 지정하는 PC와 관련된 resource 집합을 가진 능동적인 존재, 실행 중인 프로그램 프로세스의 메모리 공간 프로세스의 메모리 공간은 text, data, heap, stack 영역으로 구성된다. text : 사용자가 작성한 프로그램 코드가 CPU에서 실행 가능한 기계어로 변환되어 저장되는 공간 data : 전역변수, static 변수 같이 프로그램이 사용하는 데이터를 저장하는 공간 heap : 프로그래머가 직접 필요할 때마다 직접 공간을 할당하여 사용하는 메모리 공간 stack : 호출한 함수를 마치고 복귀할 주소, 데이터를 임시로 저장하는 공간 Process Control Block(PCB) PCB.. 2023. 9. 6.
[OS] 운영체제 구조 컴퓨터 시스템 구조 1개 이상의 CPU와 여러 개의 장치제어기(device controller) 들은 서로의 공유 메모리를 접근할 수 있게 하는 bus를 통해 서로를 연결한다. System bus 컴퓨터 시스템의 주요 구성요소를 연결하는 통로이다. data bus : 시스템 모듈 사이에 데이터가 이동하기 위한 길을 제공한다. address bus : data bus의 데이터가 어디서에서 어디로 이동해야 하는지 결정한다. control bus : CPU가 memory를 read/write 할 지에 대한 정보를 가진다. bus의 transaction을 시작하는 요소 bus arbiter : bus master들의 여러 bus 요청에 대한 충돌을 막기 위해 특정 bus master에게 bus를 제공한다. bu.. 2023. 8. 30.