전체 글 67

사용자모드 & 커널모드

운영체제의 여러 기능 중 핵심 기능을 담당하는 부분 == 커널(kernel) CPU권한 모드 - CPU는 명령어를 실행할 때 크게 두가지 권한 모드로 구분됨 사용자모드, 커널모드 - CPU는 동작하는 동안 두가지 모드를 번갈아 가며 실행 사용자 모드 (Mode Bit = 1) - 사용자 응용프로그램의 코드가 실행되는 모드로서 메모리의 유저영역만 접근 가능 - 디스크, 프린터, 메모리 등 여러 I/O 장치들과 같은 특정 리소스들에 직접 접근할 수 없음 - 대부분의 응용프로그램은 입출력 장치나 파일로의 접근이 필요하기 때문에 이 떄는 유저모드에서 커널모드로의 전환이 필요 커널 모드 (Mode Bit = 0) - 커널 영역의 코드가 실행되는 모드로서 메모리의 유저영역, 커널영역 모두 접근 가능 - 하드웨어 자..

개발 2023.12.31

CPU Bound & I/O Bound

프로세스는 CPU작업과 I/O 작업의 연속된 흐름으로 진행됨 CPU 작업 (CPU가 계속 작업함) 1. RAM에서 데이터를 LOAD 2. 가져온 데이터를 가공/연산해서 RAM에 ADD/STORE I/O 작업 (CPU가 잠시 대기함) 1. CPU가 File을 읽음(정확히는 CPU가 읽어오는건 아님 별도의 Device가 처리) 2. I/O가 발생하면서 Waiting함 - 프로세스는 CPU 명령어를 수행하다가 I/O를 만나면 대기하고 I/O 작업이 완료되면 다시 CPU작업을 수행 - 특정한 Task가 완료될 때 까지 이를 계속 반복 Burst - 한 작업을 짧은 시간동안 집중적으로 연속해서 처리하거나 실행하는 것 CPU Burst - CPU를 연속적으로 사용하면서 명령어를 실행하는 구간 - 프로세스가 CPU ..

개발 2023.12.29

Context Switch

- 하나의 CPU는 동일한 시간에 하나의 작업만 수행할 수 있기 때문에, 여러 프로세스를 동시에 실행할 수 없음 - 하나의 CPU에서 여러 프로세스(실제는 Thread를 처리)를 동시성으로 처리하기 위해서는 한 프로세스에서 다른 프로세스로 전환해야하는데 이것을 Context Switch라고 함 Context - 프로세스 간 전환을 위해서 이전ㅇ 어디까지 명령을 수행했는지 CPU Register에는 어떤 값이 저장되어 있는지 정보가 필요함 - Context는 CPU가 해당 프로세스를 실행하기 위한 프로세스의 정보를 의미 - 이 정보들은 운영체제가 관리하는 PCB라고 하는 자료구조의 공간에 저장됨 PCB(Process Control Block) - 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마..

개발 2023.12.29

Process & Thread

Process - 운영체제에 의해 파일 시스템에 설치되어 있는 파일을 프로그램 - 프로세스는 프로그램의 실제 실행을 의미하며 프로그램 파일을 실행함으로써 프로그램 데이터들이 메모리에 올라와 CPU를 할당받고 명령을 수행하고 있는 상태 -> 실제 CPU를 할당 받는 것은 Thread라고 볼 수 있다. - 프로세스는 운영체제로부터 자원을 할당받은 최소 작업 단위 Thread - Process가 가지고 있는 공유자원을 Thread들은 공유한다. (Process와 큰 차이점) - Thread는 운영체제의 스케쥴러에 의해 관리되는 CPU의 최소 실행 단위를 의미 Process vs Thread Process - 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 해당 자식 프로세스만 죽고 다른 프로세스에게 영향을..

개발 2023.12.27

REST API에 Under_Score(_)? Hyphen(-)?

일단 결론은 언더바, 하이픈 상관없지만 하이픈을 쓰는게 좋다. 입니다. 구글에서 REST API 규칙을 검색하면 대부분 이러한 내용이 나오는데 저런 룰을 어디서 정하였는지에 대해서는 확실한 근거가 없습니다. RFC3986 문서내용을 봐도 둘 다 허용을 하고 있습니다. https://www.rfc-editor.org/rfc/rfc3986 RFC 3986: Uniform Resource Identifier (URI): Generic Syntax www.rfc-editor.org 그래도 이유가 있겠거니.. 하고 조금더 검색해보았는데 !! https://www.siteguru.co/seo-academy/underscores-or-hyphens-for-seo-urls 구글 검색엔진에서는 하이픈으로 구분한다고 합니..

개발 2023.05.18

Spring Security 6 변경점

spring security 6 (spring boot 3) 사용시 이전버전과 달라진 점 1. mvcMatchers deprecated - 대신 requestMatchers를 사용 2. @Configuration 추가해야함 - 기존에는 @EnableWebSecurity 내부에 @Configuration이 있었으나 6버전부터 제거되어서 sequrity config class에 아래와 같이 추가해야한다. @Configuration @EnableWebSecurity class SecurityConfig { } 3. .access() 사용방법 변경 기존 .antMatchers("/admin").access("hasRole('ADMIN') or hasRole('SYS')") 변경 .requestMatchers("..

개발/Spring 2023.01.25

SPRING-Security SessionManagement(세션 관리 기능)

세션관리 - 인증 시 사용자의 세션정보를 등록, 조회, 삭제 등의 세션 이력을 관리 동시적 세션 제어 - 동일 계정으로 접속이 허용되는 최대 세션수를 제한 세션 고정 보호 - 인증 할 때마다 세션쿠키를 새로 발급하여 공격자의 퀴 조작을 방지 세션 생성 정책 - SessionCreationPolicy.Always //스프링 시큐리티가 항상 세션 생성 - SessionCreationPolicy.If_Required //스프링 시큐리티가 필요 시 생성(기본값) - SessionCreationPolicy.Never //스프링 시큐리티가 생성하지 않지만 이미 존재하면 사용 - SessionCreationPolicy.Statelses //스프링 시큐리티가 생성하지 않고 존재해도 사용하지 않음 (JWT사용시 체크) ..

개발/Spring 2023.01.23