분류 전체보기

CS

[CS 스터디] 스택 오버플로우 (Stack Overflow), 힙 오버플로우 (Head Overflow)

참고: TCP 스쿨 - 스택 참고: 버퍼 오버플로우 프로세스 주소 공간에 대해 공부하며 스택 오버플로우, 힙 오버플로우에 대한 궁금증이 생겼다. 메모리에서 스택 영역은 큰 주소값에서 작은 주소값으로 할당되고, 힙 영역은 작은 주소값에서 큰 주소값으로 할당된다. (이는 버퍼 오버플로우를 막기 위해서 이다. 스택 영역 뒤에는 커널 영역이 있는데, 만약 스택 영역을 초과하는 크기의 데이터를 저장하면 커널 영역을 침범해 데이터를 조작하는 등 해킹이 일어날 수 있다. 때문에 스택 영역은 큰 주소에서 작은 주소로 메모리를 할당한다.) 버퍼 오버플로우 연속된 메모리 공간을 사용하는 프로그램이 할당된 메모리 영역을 벗어난 위치에서 데이터를 읽거나 쓰려고 할 때 발생하는 것 버퍼 오버플로우가 발생하면 프로그램이 오작동하..

CS

[CS 스터디] PCB (Process Control Block)

참고: tech-interview-for-developer Process Management 운영체제는 여러 개의 프로세스의 실행 순서를 관리하고, CPU 등 자원을 배분하고 관리해야 한다. 이때 각 프로세스를 구분할 수 있어야 관리가 가능하다. 각 프로세스의 정보를 Process metadata라고 한다. Process Metadata Process ID (PID) : 프로세스를 식별하기 위한 고유 번호 Process State Process Priority CPU Register Owner CPU Usage Memory Usage Process Metadata는 프로세스가 생성되면 PCB에 저장된다. PCB (Process Control Block) Process metadata를 저장하는 블록 한 ..

CS

[CS 스터디] 시스템 콜, fork() wait() exec()

참고: OS - 시스템 호출 참고: 시스템콜, 시스템 호출이란 운영체제는 사용자가 컴퓨터를 효과적으로 사용하도록 컴퓨팅 자원을 직접적으로 관리한다. 따라서 응용 프로그램은 운영체제가 제공하는 인터페이스를 통해서 컴퓨팅 자원을 이용하는데, 이러한 인터페이스를 시스템 콜이라고 부른다. 커널 모드 vs 사용자 모드 운영체제는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동된다. Kernel Mode 운영체제가 CPU를 사용하는 모드, 하드웨어를 제어하는 명령어 (Privileged Instructions)를 실행 PC 레지스터가 운영체제가 존재하는 부분을 가리킴 시스템 콜을 통해 커널 모드로 전환된다. User Mode 사용자 애플리케이션 코드가 실행되는 모드 PC 레지스터가..

CS

[Java] HashMap

참고: 자바 HashMap 사용법 HashMap Map 인터페이스를 구현한 대표적인 Map 컬렉션 Hashing + Map Map은 구성된 객체를 저장하는 자료구조 키는 중복될 수 없다. → 동일한 키로 값을 저장하면 기존 값은 사라지고 새로운 값으로 대치 Hash을 사용 → 데이터를 검색하는데 뛰어난 성능을 보인다. HashMap 생성 import java.util.Map import java.util.HashMap Map map = new HashMap(); Map map = new HashMap(); // 타입 생략 가능 Map map = new HashMap(10); // 초기 용량 지정 Map map = new HashMap() {{ // 초기값 지정 put("key1", 1); }}; Hash..

CS/Backend

[Spring] JPA - 양방향 연관 관계 mappedBy, @JoinColumn

참고: ORM 이란 참조: @JoinColumn과 연관관계 주인 1. ORM Object Relational Mapping, 객체-관계 매핑 관계형 데이터베이스의 데이터를 객체지향적 언어로 자동으로 매핑(연결)해주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용하기 때문에 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. 데이터베이스 데이터 Object 필드 이를 통해 Spring에서 객체를 사용해 간접적으로 데이터베이스 데이터를 다룰 수 있다. Persistent API라고도 할 수 있다. Ex) JPA, Hibernate 등 데이터베이스의 관계의 종류는 크게 세 가지가..

CS

[알고리즘] 최대 공약수 구하기 - 유클리드 호제법

참고: [최대공약수 쉽게 구하는 법] - 유클리드 호제법 최대 공약수를 구하는 방법은 여러 가지가 있다. 보통 방법 (연제법) - 동시에 나눌 수 있는 수로 계속 나누는 방법 소인수분해 - 소수의 곱으로 표현하는 것 유클리드 호제법\ 유클리드 호제법 두 수 A, B 가 있을 때 A, B의 최대 공약수 G에 대하여 다음이 성립한다. (a, b는 서로소) A = G*a B = G*b 따라서 다음도 성립한다. A - B = Ga - Gb = G * (a -b) 두 수의 차 A-B는 최대공약수 G의 배수이다. 이를 통해 A-B의 약수 중 A와 B를 나누어 떨어지게 하는 수 중 가장 큰 수를 구하면 된다. 더 나아가 B와 A-B의 최대 공약수를 구하는 식으로 계속 반복해 적용할 수 있다. 119 - 91 = 28..

CS

[CS 스터디] 프로세스 주소 공간

참고: 프로세스의 주소 공간 프로그램이 CPU에 의해 실행되면 프로세스가 생성되고 메모리에 프로세스 주소 공간이 할당된다. 프로세스 주소 공간 프로세스 주소 공간은 코드, 데이터, 스택, 힙 영역으로 이루어져 있다. Code(Text) Segment : 프로그램 소스 코드 저장, read only Data Segment : 전역 변수, static 등 저장, read & write 초기화된 데이터는 Data 영역에 저장, 초기화되지 않는 데이터는 BSS 영역에 저장된다. Stack Segment : 함수(복귀할 주소, 리턴 값 …), 지역 변수 저장, read & write 컴파일 시 Stack 영역의 크기가 결정되기 때문에 무한정 할당할 수 없다. > stack overflow 발생 가능 Heap Se..

CS

[CS 스터디] 인터럽트 (Interrupt)

참고: tech-interview-for-developer 참고: 인터럽트 인터럽트 (Interrupt) 프로그램을 실행하는 도중 예기치 않은 상황이 발생할 경우, 현재 실행 중인 작업을 즉시 중단하고 발생된 상황에 대한 우선 처리가 필요함을 CPU에게 알리는 것 지금 수행하는 작업보다 우선순위가 더 높은 작업을 먼저 처리하고 하던 일을 이어서 수행한다. 인터럽트가 발생하면 CPU는 해당 인터럽트를 무시할 수도 있다. Non maskable 인터럽트 (NMI): 항상 응답해야 하는 인터럽트 Maskable 인터럽트: 그렇지 않은 경우 인터럽트 종류 인터럽트를 발생시키기 위해 하드웨어/소프트웨어는 CPU 내에 있는 인터럽트 라인을 세팅하여 인터럽트를 발생시킨다. 하드웨어 인터럽트 : 하드웨어 신호에 의해 ..

CS

[CS 스터디] 운영체제(Operating System)

참고: tech-interview-for-developer 참고: 운영체제란 무엇인가 운영체제란? 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어 하드웨어를 효율적으로 관리하며, 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 준다. Windows, Linuex, UNIX, MS-DOS 등 운영체제의 역할 프로세스 관리 프로세스, 스레드 스케쥴링 동기화 IPC 통신 저장장치 관리 메모리 관리 가상 메모리 파일 시스템 네트워킹 TCP/IP 기타 프로토콜 사용자 관리 계정 관리 접근 권한 관리 디바이스 드라이버 순차 접근 장치 임의 접근 장치 네트워크 장치 각 역할에 대한 설명 1. 프로세스 관리 운영체제에서 작동하는 응용 프로그램을 관리하는 기능 프..

CS

[CS 스터디] 프로세스 (Process), 스레드 (Thread)

참고: 프로세스&스레드 참고: 프로세스와 스레드 차이 프로세스 스레드 프로그램이 메모리 상에서 실행 중인 작업 프로세스 안에서 실행되는 여러 흐름 단위 차이점 자신만의 고유 공간과 자원을 할당받아 사용 프로세스 내 다른 스레드와 공간, 자원을 공유하면서 사용 프로세스 메모리에 올라와 실행 중인 프로그램 운영체제로부터 주소 공간, 파일, 메모리 등을 자원을 할당받은 작업의 단위 각 프로세스는 할당된 메모리에만 접근이 가능하다 (독립적) 프로세스는 프로세스 스택, 데이터 섹션, 힙, 코드를 포함한다. 프로세스 스택 : 함수의 매개변수, 복귀 주소, 로컬 변수 등 임시 메모리 영역 데이터 섹션 : 전역 변수, 정적 변수 등 힙 : 프로세스 실행 중 동적으로 할당되는 메모리 코드 : 코드 자체를 구성하는 메모리..

yooja_tea
'분류 전체보기' 카테고리의 글 목록