멀티 코어 시스템에서는 여러 프로세스가 동시에 실행되어 시스템의 성능 향상을 목표로 한다.이러한 환경에서 하나의 공유 자원을 한 프로세스가 사용중일 때,다른 프로세스가 동시에 사용하려고 하면 여러 문제가 발생한다.서로 다른 값을 변경하려고 하거나 읽는 도중에 값이 바뀌어 오류가 생길 수도 있다.이러한 문제들을 동기화 문제라고 하며이렇게 동시에 사용될 수 있는 자원을 임계 영역이라고 한다. 0. 임계 영역 Critical Section - 정의프로세스 간 공유 자원을 접근하는 데 있어서 문제가 발생하지 않도록한 번에 하나의 프로세스만 이용하도록 다른 프로세스의 접근을 제한하는 영역 - Critical Section Problem: 임계 영역을 만족시키기 위해서 해결해야 할 3가지 문제들 상호배제(Mutu..
전체 글
혜+개발+아기 혹은 혜+발아기. 응애 웹 개발자http://localhost:8080/api/board로 요청을 보내는데 아래와 같은 예외가 떴다. 1. 오류 내용더보기org.springframework.security.access.AccessDeniedException: Access Denied at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:98) ~[spring-security-web-6.3.0.jar:6.3.0] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)..
1. TLB 의미와 구성TLB는 Paging에서 문제가 됐던 잦은 메모리 접근을 보완하기 위한 방법이다.자주 사용하는 Page Table Entry의 경우 MMU의 SRAM에 캐싱하는 것이다.기존 Paging은 아래와 같은 방법으로 진행되었다.위 사진에서 보다시피 페이지 테이블은 메인 메모리에 존재해서 CPU는 메인 메모리에 최소 두 번은 접근해야 원하는 데이터를 얻을 수 있다.1) 페이지 테이블에 접근2) 페이지 테이블을 기반으로 실제 메모리로 접근따라서 이러한 메모리 낭비를 줄이고자 TLB를 사용한다.TLB를 사용하면 Address translation 과정이 아래와 같이 바뀌게 된다. PTEA(PTE Address) - TLB 정의 및 역할가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기..
1. 오류 내용더보기java.lang.IllegalArgumentException: Invalid character found in method name [0x160x030x010x000xf70x010x000x000xf30x030x030x19|0x920xbb(G0x86p0xc40xc90xff0x040xa1Q0x1eP0x17h0xab0xfe0xa7&0x000xa26D0xf90x99%0xe10x8f2 ]. HTTP method names must be tokens 2. 기존 MemberController@RestController@RequestMapping("/api")@RequiredArgsConstructorpublic class MemberController { private final Membe..
메인 메모리의 크기는 한정되어 있다.따라서 물리적인 메모리 크기보다 크기가 큰 프로세스는 실행시킬 수 없다.이러한 프로세스를 실행시키기 위해서는 메인 메모리를 크게 키울 수 있겠지만 이것은 굉장히 비효율적이다.따라서 등장한 방법이 바로 가상 메모리(Virtual Memory)이다. 1. 가상메모리(Virtual Memory)란?정의: 메모리 관리 기법의 하나로 매우 큰 메모리인 것처럼 보이게 만드는 것👉 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식장점사용자 프로그램이 물리 메모리보다 커져도 됨 👉 메모리 크기의 제약이 자유로워짐각 사용자 프로그램이 더 적은 메모리를 차지하여 더 많은 프로그램을 동시 수행 가능CPU 이용률과 처리율이 높아짐프로그램을 메모리에 올리고 스왑할 때 ..
1. 페이징이란? Paging정의프로세스의 메모리 공간을 동일한 크기의 page 단위로 나누어 물리적 메모리의 서로 다른 위치에 page들을 저장하는 메모리 관리 기법특징물리적 메모리를 page와 같은 크기의 frame으로 미리 나누어둠주소 바인딩을 위해 모든 프로세스가 각각의 주소 변환을 위한 page table을 가짐 Paging 기법 사용 시 발생하는 메모리 단편화 Memory fragmentation메모리 단편화란?물리적 메모리 공간이 작은 조각으로 나뉘어 메모리가 충분히 존재해도 할당이 불가능한 상태발생 이유?paging 기법에서는 프로세스의 논리적 주소 공간과 물리적 메모리가 같은 크기의 page 단위로 나뉘므로 외부 단편화 문제는 발생하지 않음. 하지만❗ 프로세스 주소 공간의 크기가 pag..
1. 정의하드웨어가 프로그램의 가상 주소를 실제 물리적 주소로 변환하는 과정이를 각 바인딩 단계에서 수행할 수 있음 2. 유형 - 컴파일 타임 바인딩 Compile Time Binding주소 변환 시점: 컴파일 시과정: 고급 언어 코드가 컴파일될 때, 변수와 함수의 메모리 주소가 결정됨특징: 고정된 주소, 컴파일된 프로그램이 항상 동일한 메모리 주소를 사용함주소 변환: 컴파일러가 소스 코드를 기계어로 변환하면서 가상 주소를 실제 물리적 주소로 매핑함 - 로드 타임 바인딩 Load Time Binding주소 변환 시점: 프로그램이 메모리에 로드될 때과정: 운영 체제가 프로그램의 실행 파일을 메모리에 로드하면서, 프로그램의 가상 주소를 실제 물리적 주소로 매핑함특징: 로드될 때마다 주소가 달라질 수 있음..
1. 프로세스의 주소 공간정의: 프로세스가 사용할 수 있는 메모리 주소의 범위영역: 하나의 프로세스는 코드 영역, 데이터 영역, 스택 영역, 힙 영역을 가짐. 이중 스택 영역과 힙 영역은 확장되거나 축소될 수 있음코드 영역: 실행할 프로그램의 코드(명령어)가 저장되는 영역데이터 영역: 정적 변수가 저장됨스택 영역: 지역 변수, 함수 이름, 함수 인자와 반환 값 등을 저장힙 영역: 프로그램 실행 시에 동적으로 할당되는 메모리 저장 2. 논리 주소와 물리적 주소물리적 주소(Physical address)메모리가 실제 올라가는 위치심볼릭 주소(Symbolic address)변수를 사용하고, 함수를 호출할 때 변수와 함수 이름으로 접근하는 것처럼 사용컴파일할 때 논리 주소로 변경됨논리 주소(Logical a..
1. 프로세스 제어 블록 (PCB, Process Control Block) - 정의운영체제가 프로세스를 관리하기 위해 사용하는 데이터 구조. 각 프로세스에 대한 중요한 정보를 저장함(마치 상품에 달린 태그 같음) - 특징PCB는 프로세스 생성 시에 만들어짐. 프로세스가 종료되면 폐기됨운영체제는 PCB로 특정 프로세스를 식별하고 해당 프로세스를 처리하는 데 필요한 정보를 판단함생성 위치: 커널 영역 👉 '새로운 프로세스가 생성되었다'는 말은 '운영체제가 PCB를 생성했다'는 말과 같고,'프로세스가 종료되었다'는 말은 '운영체제가 해당 PCB를 폐기했다'는 말과 같음 - PCB에 담기는 정보1) 프로세스ID (PID, Process ID)정의: 특정 프로세스를 식별하기 위해 부여하는 고유한 번호특징:..
1. 정의사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수. 시스템 호출이라고도 부름 2. 필요성보호와 보안: 사용자 프로그램이 직접 하드웨어 자원에 접근하면 시스템의 안정성과 보안에 문제가 발생할 수 있음. 시스템 콜은 이러한 접근을 운영 체제의 통제를 받도록 하여 보호와 보안을 강화함추상화: 시스템 콜은 하드웨어의 복잡한 동작을 추상화하여, 프로그램이 쉽게 하드웨어를 사용할 수 있게 함자원 관리: 운영 체제가 시스템 자원을 효율적으로 관리하고, 사용자 프로그램 간의 자원 충돌을 방지할 수 있음 3. 종류시스템 콜의 종류에는 프로세스 제어, 파일 조작, 디바이스 조작, 정보 유지, 통신, 보호가 있다. - 프로세스 제어 Process Control끝내기 exit, ..