프로세스 스케줄러(Process Scheduler)는 OS의 핵심 기능으로서 동시에 실행되는 프로세스의 실행순서와 우선순위를 관리하는 역할을 한다. 조금 더 자세히 말하자면 여러 프로세스가 시스템의 리소스에 접근할 때 필연적으로 경쟁상태에 놓이게 되는데, 프로세스 스케줄러는 이 경쟁상태를 적절히 조율해서 리소스의 사용 효율성과 짧은 응답시간, 처리량과 처리율 등을 극대화시키기 위해 다양한 알고리즘을 이용해 프로세스의 스케줄을 관리한다. 이와 같은 프로세스 스케줄링 알고리즘은 크게 아래의 두 가지로 나뉘며, 선점형 스케줄링 특정 프로세스가 CPU를 점유하고 있더라도 우선순위가 높은 다른 프로세스가 실행되면 강제로 기존 프로세스를 중단시키고 새로운 프로세스를 실행시키는 방식이다. 우선순위 기반, 라운드 로빈..
목차 출처: https://bpicolor.com/raster-vs-vector-images-the-important-differences/ 래스터 이미지와 벡터 이미지는 둘 다 이미지를 표현하는 방식이다. 사용하며 몸으로는 느꼈지만, 생각난 김에 둘의 차이를 제대로 정리하고 가기. Raster Image 래스터 이미지는 정사각형의 픽셀로 이루어진 이미지이다. 일반적으로 각 픽셀의 위치와 색상정보를 함께 담은 맵, 혹은 배열로 표현할 수 있으며, 비트(Bit)로 이루어진 지도(Map of Bits)라는 의미에서 비트맵(Bitmap), 혹은 픽스맵(Pixmap)이라고 불리기도 한다. 여기서 비트는 정해진 크기의 정사각형이기 때문에 이미지를 확대하면 픽셀의 크기가 커지며 일종의 깨짐 현상이 발생한다. 예를 ..
목차 XSS, CSRF, SQL Injection은 웹 보안에서 가장 많이 발생하는 취약점들이다. 말을 바꾸면 좋지 않은 의도를 가진 사람이 해당 서비스나 서비스를 이용하는 사용자를 공격하는 방법들인데, 이 글에선 하나씩 개괄적으로 보고 그 방지책에 대해 알아본다. XSS(Cross-Site Scripting) XSS는 악성 스크립트를 삽입하여 해당 페이지를 요청하는 사용자의 브라우저에서 실행되도록 하는 방식이다. 이 공격은 주로 사용자의 개인정보가 담긴 쿠키나 세션을 하이재킹해 권한을 탈취하는 것을 목적으로 한다. 최악의 경우 탈취한 권한으로 사용자의 계좌에서 돈을 인출하는 상황도 발생할 수 있기 때문에, XSS는 최악의 보안 위협으로 간주되고 있다. 이를 방지하기 위해서는 입/출력 값의 스크립트 태그..
목차 객체 지향 프로그래밍과 함수형 프로그래밍은 둘 다 프로그래밍 패러다임의 한 종류이며, 여기서 패러다임이란 단순히 말하자면 프로그래밍을 무엇으로 정의할 것인가에 대한 관점이라고 정리할 수 있다. 이런 맥락에서, 본격적으로 두 패러다임에 관해 정리하기 전에 근본적인 차이를 말하자면 객체 지향 프로그래밍은 "프로그래밍은 상호작용하는 객체의 집합이다."라는 관점을 가진 패러다임이며 함수형 프로그래밍은 "프로그래밍은 연속된 함수의 집합이다."라는 관점을 가진 패러다임이라 정리할 수 있다. 추가로 객체 지향 프로그래밍은 일반적으로 명령형 프로그래밍으로, 함수형 프로그래밍은 일반적으로 선언형 프로그래밍으로 작성한다는 차이도 있다. 여기서 명령형/선언형 프로그래밍 역시 프로그래밍 패러다임의 한 종류이며, 대략 아..
목차 한동안 WebFlux로 개발을 하면서 제목에 쓰인 것들에 대해 몸으로 배울 수 있었다. 그러나 여전히 막연한 부분이 있고, 비동기와 논블로킹이 헷갈릴 때도 있어서 오랜만에 최대한 간결하게 핵심만 정리하고 넘어가기. Synchronous execution, Asynchronous 요약부터 하고 들어가자면, 둘의 차이는 결괏값 리턴 순서가 요청 순서를 지키느냐(동기) 아니냐(비동기) 하는 것이다. 조금 덜 직관적으로 말하자면 둘의 차이는 호출된 요청의 결과를 어느 쪽에서 처리하느냐 하는 데 있다고 볼 수도 있다. 결과는 당연히 호출한 쪽에서 신경 써야 하는 거 아닌가? 싶지만 아니다. 위 그림을 보면 알 수 있듯이, 동기 처리의 경우 B메서드를 호출한 A가 작업 완료 여부를 처리한다. 따라서 여러 작업..
목차 Program, Process, Thread 프로그램, 프로세스, 그리고 스레드는 모두 컴퓨터에서 실행되는 코드를 가리킨다. 하지만 당연하게도 중요한 차이점들이 있는데, 짧게 정리하면 아래와 같다. 프로그램 프로그램은 실행 가능한 코드와 데이터의 집합이다. 실행 파일이나 라이브러리 형태로 디스크에 저장되며 실행되기 전에 디스크에서 메모리로 로드되는데, 이를 '프로그램 인스턴스'라고 한다. 프로세스 위에서 말한 '프로그램 인스턴스'가 바로 프로세스이다. 다시 한번 정리하자면 프로그램이 실행되어 운영체제에 의해 메모리상에 올라가면 이를 프로세스라 부른다. 따라서 운영체제로부터 자원을 할당받는 작업의 단위라 볼 수 있으며, 프로세스 사이에는 자원이 공유되지 않는다. 이 때문에 Context Switchi..
대략 네 달쯤 전에, JVM의 기본 구조에 대해 다루면서 스택과 힙에 대해 다루기는 했다. 2022.12.11 - [Development/Technical Interview] - [면접 준비 - Java]JVM 구조(2), Runtime Data Area [면접 준비 - Java]JVM 구조(2), Runtime Data Area 지난 글에선 JVM의 대략적인 구조와 Workflow에 대해 알아보았다. 2022.10.30 - [Development/Technical Interview] - [Java]JVM 구조(1), JVM Workflow [Java]JVM 구조(1), JVM Workflow JVM(Java Virtual Machine) JVM(Java Virtual Machine)이 gnidinger..
컴퓨터공학에서 유독 16진수를 많이 사용하는 이유는 2진수를 4자리씩 끊어 표현할 수 있기 때문이다. 참고로 16진수는 0부터 9의 숫자, 그리고 A부터 F까지의 알파벳으로 수를 표현하는데, 읽는 법을 조금이라도 훈련받은 사람이라면 16진수 숫자를 바로 2진수로 변환하는 게 쉽고 언제나 가능하다. 즉 0과 1의 세계인 컴퓨터공학에서 길게 늘어지는 2진수를 가독성 좋게 축약하기 위해 선택한 진법이며, 8도, 32도 아닌 16인 이유는 위의 이유에 더해 16진수 두 자리가 1바이트(2^8)를 표현할 수 있기 때문이다. 그렇다고 1바이트를 한 자리로 표현하려면 64진수가 필요해 가독성이 심각하게 떨어지고, 8진수는 조금 미묘하므로 16진수를 필연적으로 골랐다고도 할 수 있겠다. 코딩을 하거나 알고리즘을 풀다 ..
다른 글을 읽다가 32비트 운영체제에선 메모리, 즉 램의 크기가 4기가로 제한된다는 것을 보았다. 크게 중요한 것 같지는 않지만 그래도 알고 있어야 하는 지식인 것 같아서 짧게 정리. 32bit 32비트 운영체제란 데이터 버스의 크기가 32비트, 즉 4바이트인 운영체제를 가리킨다. 참고 1바이트 = 8비트 1킬로바이트(kb) = 1024바이트 1메가바이트(mb) = 1024킬로바이트 ... 1바이트가 8비트로 정해진 것은 기술적인 이유라기보다는 역사적인 이유에 가깝다. 미 표준연구소(NIST)에서 확장 아스키코드를 8비트로 발표했고, 비슷한 시기에 IBM이 개발한 System/360의 데이터버스도 1바이트를 8비트로 정했기 때문이다. 그 이전에는 6비트, 7비트를 1바이트로 사용하기도 했다고 한다. 다시..
목차 https://gnidinger.tistory.com/651 [면접 준비 - Network]CORS에 대하여 - 1 CORS 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여 웹 애플리케이션이 다른 출처의 선택한 리소스에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 메 gnidinger.tistory.com 벌써 세 달이나 이전 일이 되었지만, 처음 적은 CORS의 개념과 관련된 글에 이어 조금 실제적인 부분을 정리하려고 한다. CORS라는 게 무엇인지 경험적으로는 알고 또 처리할 수 있지만 구체적으로 어떻게 표현되는지 알고 싶어서. 짧은 글이 될 것 같지만, 시작! Origin in CORS CORS에서 Origin이..
- Total
- Today
- Yesterday
- 동적계획법
- Backjoon
- a6000
- 기술면접
- 리스트
- 알고리즘
- 유럽
- 칼이사
- 세모
- spring
- 면접 준비
- 세계일주
- java
- 맛집
- 유럽여행
- 자바
- 여행
- 스프링
- 세계여행
- 백준
- 야경
- BOJ
- Python
- 파이썬
- RX100M5
- 스트림
- 남미
- Algorithm
- 중남미
- 지지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |