분류 전체보기(137)
-
[운영체제] 스레드와 병행성
스레드는 CPU 이용의 기본 단위이다. 스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 그리고 스택으로 구성된다. 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 그리고 열린 파일이나 신호와 같은 운영체제 자원들을 공유한다. 전통적인 프로세스는 하나의 제어 스레드를 가지고 있다. 만일 프로세스가 다수의 제어 스레드를 가진다면, 프로세스는 동시에 하나 이상의 작업을 수행할 수 있다. 단일, 멀티 스레드 차이를 말함 동기현대의 대부분의 소프트웨어 응용들은 다중 스레드를 이용한다. 하나의 응용은 몇 개의 실행 흐름을 가진 독립적인 프로세스로 구현된다. 아래에서는 다중 스레드 응용 프로그램의 몇 가지 예를 보여준다.이미지 모음에서는 사진 축소판을 만드는 응용 프로그램은 별도의 ..
2024.09.27 -
[프로그래머스 - JAVA] 양궁대회
문제 풀이0점씩인 경우 생략 (결과 배열 값을 말함)어피치가 라이언 보다 점수가 같거나 크면 어피치 승리동일한 점수 차이로 승리 경우 수가 많은 경우 가장 작은 점수들로 승리한 경우를 반환1번 조건의 경우 점수 계산 함수에서 처리 2번 조건의 경우도 점수 계산 함수에서 처리3번 조건의 경우 화살 배당시 0점부터 시작해 처리 문제 정답 class Solution { static int[] lion_info, answer; static int MAX_SCORE = Integer.MIN_VALUE; public int[] solution(int n, int[] info) { answer = new int[] { -1 }; lion_info = ne..
2024.09.22 -
[프로그래머스 - JAVA] 단어 변환
문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다.1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다.2. words에 있는 단어로만 변환할 수 있습니다.예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변환할 수 있습니다.두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과정을 거쳐 begin을 target으로 변환할..
2024.09.15 -
[트러블 슈팅 - 중복 API 요청] API 멱등성 (feat: redis)
이번 문제는 API 요청이 중복 클릭과 네트워크 지연으로 동일한 요청을 반복하는 문제가 발생하는 일이 생겨 이를 해결하는 과정을 작성할 예정입니다. 멱등성이란 멱등성은 동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 말한다. 이는 클라이언트에서 같은 요청을 여러 번 보내거나 네트워크 지연으로 인한 오류로 인한 중복 요청이 오더라도 서버는 상태가 변하지 않게 유지하도록 보장하는 것을 말한다. 멱등성이 보장되지 않는다면 어떻게 될까? 멱등성이 보장되지 않는 요청의 종류에는 무엇이 있을까? 서버 리소스 조회 혹은 대체하는 GET, PUT의 경우 여러번 요청해도 멱등성이 보장된다. 불가피하게 같은 요청이 발생하더라도 데이터 변경이 없기 때문이다. 문제가 생길 거 같은 DELETE의 경우에도 데이터..
2024.09.11 -
[운영체제] 프로세스 간 통신
운영체제 내에서 실행되는 병행 프로세스들은 독립적이거나 또는 협력적인 프로세스들일 수 있다. 프로세스가 시스템에서 실행 중인 다른 프로세스들과 데이터를 공유하지 않는 프로세스는 독립적이다. 프로세스가 시스템에서 실행 중인 다른 프로세스들에 영향을 주거나 받는다면 이는 협력적인 프로세스들이다. 분명히 다른 프로세스들과 자료를 공유하는 프로세스는 상호 협력적인 프로세스이다. 정보 공유: 여러 응용 프로그램이 동일한 정보에 흥미를 느낄 수 있으므로, 그러한 정보를 병행적으로 접근할 수 있는 환경을 제공해야 한다.계산 가속화: 만일 우리가 특정 태스크를 빨리 실행하고자 한다면 우리는 그것을 서브태스크로 나누어 이를 각각이 다른 서브태스크들과 병렬로 실해오디게 해야 한다. 이러한 가속화는 복수 개의 처리 코어를 ..
2024.09.11 -
[운영체제] 프로세스에 대한 연산
대부분 시스템 내의 프로세스들은 병행 실행될 수 있으며, 반드시 동적으로 생성되고 제거되어야 한다. 그러므로 운영체제는 프로세스 생성, 종료를 위한 기법을 제공해야 한다. 프로세스 생성 및 종료 과정 실행되는 동안 프로세스는 여러 개의 새로운 프로세스들을 생성할 수 있다. 같이 생성한 프로세스는 부모 프로세스 새로운 프로세스는 자식 프로세스라 부른다. 때문에 프로세스 구조는 트리구조를 형성한다. 대부분의 운영체제에서는 PID (프로세스 식별자 -> DB -> 유일키 역할)를 사용해 프로세스의 고유값을 할당해 구별한다. 일반적으로 프로세스가 자식 프로세스를 생성할 때 그 자식 프로세스는 자신의 임무를 달성하기 위하여 CPU 시간, 메모리, 파일, 입출력 장치가 필요한다. 자식프로세스는 이 자원을 운영체제..
2024.09.04