728x90

IT 50

[운영체제-혼공] 교착상태(Deadlock)

▣ 교착상태란? : 두개이상의 프로세스가 서로가 가진 자원을 대기하고 있어 아무것도 진행되지 못하는 상태를 말한다. 즉, 각 프로세스가 다음에 필요한 자원을 다른 프로세스가 가지고 있어서 발생한다. 교착상태를 표현할 수 있는 자원 할당 그래프를 통해 알아보자. P1 : 프로세스R1: 자원의 종류● : 자원의 개수(ex : CPU)  교착상태의 발생 ○ 교착상태의 발생조건1. 상호 배제: 해당 자원을 한 번에 하나의 프로세스만 이용가능했기 때문에. 2. 점유와 대기 : 어떤 자원을 보유한채 다른 자원을 할당받기를 기다렸기 때문에.3. 비선점 : 다른 프로세스의 자원을 강제로 뺏지 못하기 때문에.4. 원형 대기 : 프로세스들과 프로세스가 요청 및 할당 받은 자원이 원의 형태(순환형태)를 이루었기 때문에.  ..

[Core] @ComponentScan

Appconfig에서 일일이 @Bean을 달기 힘들다 → @ComponentScan 해결 @ComponentScan   ● ComponentScan은 @Component가 붙은 모든 Class를 스프링 빈으로 등록한다.  ● @Component 뿐만 아니라 @Service, @Controller, @Repository, 등이 있다.     - @Controller : 스프링 MVC컨트롤러로 인식     - @Repository : 데이터 접근 계층으로 인식.     - @Service : 비즈니츠 계층 인식용( 딱히 기능이 없다고 한다.)   ● Filter    includeFilters, excludeFilters를 이용하여 컴포넌트스캔에 추가할 혹은 제외할 대상을 지정할 수 있다.@Configura..

[Algorithm - DFS/BFS] BFS문제 풀기 ++ 응용(7576번, 1697번)

DFS/BFS의 가장 기본문제를 풀어보고 BOJ 1697번, 7576번에 적용해보도록 했다. ● 토마토(7576번) 미로찾기와 비슷한 유형의 문제인것같다. BFS를 적용하여 문제를 해결해야 하는 문제임은 알았지만,(문제점 1) 1이 여러개 있을경우(시작지점이 여러개) 어떻게 적용해야할지 고민하고,(문제점 2) 토마토가 모두 익을때까지의 최소 날짜 → BFS의 depth의 값을 알아야 했다. 예상외로 답은 간단했다.문제점 1. 단순하게 처음부터 1의 시작점을 Queue에 넣게 되면 시작위치가 어디에 있던 queue.poll()을 했을때자연스럽게 그곳에서 시작되는것이었다. 문제점 2. 하루가 지날때 익는 토마토의 값을 1이 아닌 처음 시작점의 1로부터 1씩 증가하도록 하고 마지막 하루를 빼주는 방식으로 계산..

Algorithm 2024.04.29

[운영체제 - 혼공] 동기화

프로세스의 동기화란? 프로세스들의 수행시기를 맞추는 것이다. 프로세스를 올바른 순서대로 실행하고, 동시에 접근해선 안될 자원을 관리한다. ■ 공유 자원과 임계구역프로세스들이 공동으로 사용하는것이 공유자원이며, 동시에 접근하면 발생하는 자원에 접근하는 코드영역을임계구역이라 한다. ● 레이스 컨디션 : 임계구역의 코드를 동시다발적으로 실핸하여 문제가 발생하는 것.● 임계구역 문제의 3가지 원칙   1. 상호 배제 : 한 프로세스가 임계구역에 진입하면 접근 금지.   2. 진행 : 임계구역에 어떤 프로세스도 진입하지 않았다면, 프로세스의 접근 허가.   3. 유한 대기 : 프로세스가 임계구역에 진입하고 싶다면 언젠가는 들어올 수 있다. (??) ■ 동기화 기법● 뮤텍스 락 : 상호 배제를 위하여 뮤텍스 락을 ..

[Lecture-Core] Singleton

순수 DI컨테이너(AppConfig)에서는 요청마다 객체를 생성한다.→ 100건의 요청마다 100개의 객체를 생성 → 낭비 발생   ★해결책: 객체가 1개만 생성되고 공유하도록 설계한다 → 싱글톤(Singleton)패턴// 싱글톤 컨테이너 사용ApplicationContext ac = newAnnotationConfigApplicationContext(AppConfig.class); //1. 조회: 호출할 때 마다 같은 객체를 반환 MemberService memberService1 = ac.getBean("memberService", MemberService.class); //2. 조회: 호출할 때 마다 같은 객체를 반환 MemberService memberService2 = ac.getBean("me..

Spring MVC - Section 2 : Servlet

◈ Section2 : Servlet : @ServletComponentScan : Spring이 Servlet을 자동으로 찾아 등록해준다. // name: Servlet이름, urlPattern: URL 매핑 @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("HelloServlet.service");..

카테고리 없음 2024.04.01

Spring MVC - Section 1 : Understanding Web Application

◈ Section 1 : Understanding Web Application □ Web Server & Web Application Server(WAS) ○ Web Server: 정적 리소스(파일) ○ WAS : 애플리케이션 로직 → 애플리케이션 코드를 실행하는데 더 특화. ○ 정적 리소스와 애플리케이션 리소스의 사용량 증가시 각각 별도로 Web Server와 WAS를 증설시켜 효율적으로 리소스를 관리할 수 있다. □ Servlet : TCP/IP통신 및 HTTP요청을 처리하고 응답을 자동으로 수행하는 기능을 제공 ○ Servlet Container : Servlet을 지원하는 WAS - Servlet 객체는 싱글톤으로 관리. - 멀티 쓰레드 처리 지원 - JSP도 Servlet으로 변환 되어서 사용 ..

카테고리 없음 2024.03.27

RESTful Web Service

▣ RESTful Web Service 구성 □ MappingJacksonValue @GetMapping("/v1/users/{id}") // MappingJacksonValue를 이용하여 JSON응답을 생성할때 필터링을 적용할 수 있다. public MappingJacksonValue retrieveUserAdmin(@PathVariable int id) { User user = service.findOne(id); // AdminUser -> id, name, joinDate, password, ssn AdminUser adminUser = new AdminUser(); if (user == null) { throw new UserNotFoundException(String.format("ID[%s ..

카테고리 없음 2024.03.21

[운영체제] CPU스케줄링

◈ CPU 스케줄링    : 운영체제가 프로세스들에게 공정하고 합리적으로 CPU자원을 배분하는 것을 말한다. ■ CPU우선순위  ● 프로세스 중 입출력이 많은 프로세스를 입출력 집중 프로세스, 연산 및 컴파일, 그래픽 처리작업등 CPU작업이 많은   프로세스를 CPU집중 프로세스라고 한다.    → 이를 바탕으로 각 프로세스의 PCB에 우선순위를 명시하고 먼저 처리할 프로세스를 결정한다.   □ 스케줄링 큐  ○ 운영체제가 일일이 모든 PCB를 검사하여 이용할 프로세스를 결정하는것은 시간이 오래걸리고 비효율적이다.    ○ 이를 위해 메모리에 적재되는 프로세스들을 큐에 줄을 세우고, CPU이용 프로세스들을 큐에 줄을 세워 관리한다.    ○ 대표적인 큐      - 준비 큐(re..

728x90