본문 바로가기

전체 글

Race Condition(경쟁 상태)이 발생하는 사례란? * 본 내용은 운영체제를 공부하며 추후 복습하기 위해 포스팅하는 게시물입니다. Race Condition(경쟁 상태) - 특정 변수의 값을 증가시키거나 감소시키는 작업은 여러 개의 명령어로 구성되어 있어, 서로 다른 프로세스가 동일한 변수를 동시에 증가시키거나 감소 시키는 작업 시 순서가 예상과 다르게 작동하면 결과값에 영향을 줄 수 있는 상태를 의미 * 프로그램적으로 해결할 수 있는 조건 1) Mutual Exclusion - 프로세스가 Critical Section 부분을 수행 중일 때 다른 프로세스가 Critical Section에 진입하면 안됨 2) Progress - Critical Section을 수행하는 부분이 없다면 프로세스를 진입할 수 있게 해줘야함 3) Bounded Waiting - .. 더보기
CPU 스케줄링이란? * 본 내용은 운영체제를 공부하며 추후 복습하기 위해 포스팅하는 게시물입니다. 운영체제는 메모리에 할당된 여러 프로세스에게 어떻게 CPU를 할당할지 결정해야한다. 이를 위해서 다양한 CPU 스케줄링은 사용하며 이번 게시물은 CPU 스케줄링이 어떤 것이 존재하는지 알아보며 이를 설명하기 위한 용어들을 알아보자 장기 스케줄링 - 프로그램을 실행할 때 프로그램을 메모리에 할당할지 결정하는 방법 - 현재 운영체제에서 사용되지 않는다 중기 스케줄링 - 메모리가 부족하여 디스크의 일부를 메모리처럼 사용할 때 어떤 프로세스를 메모리에서 제거할지 결정하는 방법 단기 스케줄링 - CPU를 Ready Queue에 존재하는 프로세스에게 어떻게 할당할지 결정하는 방법 CPU 스케줄링 - 단기 스케줄링을 의미 디스패처 - CP.. 더보기
프로세스에 관하여 알아보자 * 본 내용은 운영체제를 공부하며 추후 복습하기 위해 포스팅하는 게시물입니다. 프로세스란?? - 메모리를 할당받아 실행되고 있는 프로그램을 의미 - 프로그램의 모든 영역이 메모리에 올라가지 않음(Page 단위로 분할하여 필요한 부분만 메모리에 할당) 프로세스는 메모리를 할당받을 때 프로그램 내 주소를 논리적 주소로 변환한다. 즉 프로그램의 논리저 시작주소는 0이며CPU가 프로세스를 수행하기 위한 메모리 접근 시 이러한 논리적 주소를 레지스터와 하드웨어를 이용하여 메모리의 물리적 주소로 변환하여 접근한다.(가상 메모리 챕터에서 자세히 다룰 예정) 프로그램을 실행하면 다음과 같은 상태들을 나타낸다. New : 프로세스를 생성중인 상태 Ready : Ready Queue에 존재하여 CPU를 할당받기를 기다리고.. 더보기
코드성 데이터를 Java Enum으로 관리하는 방법에 대한 고찰 고정된 코드성 데이터를 가져오는 방법으로는 여러가지 방법이 존재합니다. 1) DB 테이블로 관리하며 SELECT 쿼리를 통해 가져오는 방법 2) 애플리케이션단에 정의하는 방법 두번째 방법으로 개발 시 관리를 효과적으로 할수 있을까?라는 고민에서 시작되었습니다. 예시는 다음과 같습니다. 국제팩스를 발송하는 애플리케이션을 개발하기 위해서는 필요한 데이터가 존재하며 데이터는 다음과 같습니다. 국가코드, 국가명, 포인트 Enum 클래스를 작성하여 국가코드를 기준으로 오름차순 정렬합니다. //국가코드로 정렬 public enum InterPriceEnum { USA(1, "미국", 93), RUSSIA(7, "러시아", 591), GERMANY(49, "독일", 307), AUSTRALIA(61, "호주", 35.. 더보기
Syn Flooding 발생했던 사례 운영하고 있던 서비스의 요청/응답이 느려지는 사건이 발생하였습니다. 갑작스레 발생한 사건에 몇 시간 동안 원인을 분석해보니 Syn Flooding이 발생했던 사례였습니다. 이번 사건을 통해 Syn Flooding이 어떻게 발생하였는지, 그리고 대응방안은 무엇인지 알게되었던 것 같습니다. Syn Flooding Syn Flooding은 TCP 연결과정(3-way handshaking)에서 발생하는 공격입니다. 보통 http 프로토콜을 이용한 요청(REST API)은 TCP 프로토콜 위에 요청됩니다. TCP 연결이 필요하기 때문에 3-way handshake 과정이 반드시 필요합니다. 우선 3-way handshak이 무엇인지 알아보도록 하죠. 3-way handshake 1. Client는 특별한 세그먼트.. 더보기
SQL 문제풀이 6) 실력이 조금씩 상승하고 있는것을 느낍니다. 난이도 Medium 단계의 문제를 풀었는데 풀이도 보지 않고 얼마 걸리지 않았네요. 문제의 요구사항은 다음과 같습니다. code 별, power 별 최소한의 코인이 필요한 데이터를 출력하라 non-evil인 wand를 사야하며 id, age, coins_needed, power를 출력하라 power를 기준으로 내림차순 정렬하며, 같은 power일경우 age를 기준으로 내림차순 정렬하라 Wands 테이블 id code coins_needed power 1 4 3688 8 2 3 9365 3 3 3 7187 10 4 3 734 8 5 1 6020 2 6 2 6773 7 7 3 9873 9 8 3 7721 7 9 1 1647 10 10 4 504 5 Wands_pro.. 더보기
SQL 문제풀이 5) 안녕하세요. 오늘도 SQL 문제를 풀고 있습니다. 일부 막히는 부분이 있어 고민하다가 결국 풀이를 봤네요... 도대체 언제쯤 풀이를 보지 않고 풀 수 있을까.. 문제의 요구사항은 다음과 같습니다. hackers 테이블과 challenges 테이블이 존재합니다. hackers 테이블에는 hacker_id, name 칼럼이 존재하며 challenges 테이블에는 hacker_id, challenge_id가 존재합니다. 가장 많이 도전했던 hacker_id 순으로 출력하며 출력 데이터는 hacker_id, name, 도전했던 수입니다. 도전했던 수가 동일하다면 hacker_id를 오름차순으로 정렬합니다. 만약 도전했던 수가 동일한 hacker들이 존재하며 최고 도전했던 수보다 작을경우 해당 hacker들은 출.. 더보기
SQL 문제풀이 4) 오늘도 SQL 문제풀이에 대한 글을 포스팅 하겠습니다. Medium 난이도로 상승해서 풀어보니 풀 수 있는 문제가 존재하지 않네요. 계속 풀다보면 문제해결능력과 사고력이 생기지 않을까합니다. 문제 요구사항입니다. 1) 일을 시작하는 시작일자와, 일을 끝마치는 종료일자가 칼럼으로 주어집니다. 2) 일을 끝마치는 날짜와 다른 행의 일을 시작하는 날짜가 동일할 경우 프로젝트는 동일한 프로젝트로 간주합니다. ex) 2020-12-17 2020-12-18 2020-12-18 2020-12-19 2020-12-17 ~ 2020-12-19가 동일한 프로젝트 3) 동일한 프로젝트로 간주되는 프로젝트의 시작일자와 종료일자를 구합니다. 4) 프로젝트 기간을 오름차순으로 정렬하며, 동일한 프로젝트 기간일경우 시작일자를 오름.. 더보기