분류 전체보기 233

[기술면접] 운영체제 - 2/2

1편에 이어서 작성하겠습니다. ⭐ 데드락(DeadLock) 이란? 데드락(DeadLock) 또는 교착상태란 한정된 자원을 여러 프로세스가 사용하고자 할 때 발생하는 상황으로, 프로세스가 자원을 얻기 위해 영구적으로 기다리는 상태입니다. ▶ 데드락의 4가지 조건에 대해 설명해 주세요. 1. 상호 배제(Mutual Exclusion) : 한 번에 한 프로세스만 공유 자원에 접근 가능합니다. 2. 점유 대기 (Hold & Wait) : 공유 자원에 대한 접근 권한을 가진 채로 다른 자원에 대한 접근 권한을 요구. 3. 비선점 (Nonpreemptive) : 다른 프로세스의 자원을 뺏을 수 없음. 4. 순환 대기 (Circular wait) : 두 개 이상의 프로세스가 자원 접근을 기다릴 때, 관계가 순환적 구..

[기술면접] 운영체제 - 1/2

이미 정리해 둔 운영체제 기술면접 Q&A가 있지만 (욕심부려서.. 이번에는) 다른 분들이 정리해 두신 글을 참고하면서 리마인드 하고자 합니다. 😎 운영 체제(OS, Operating System) 하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 주는 소프트웨어입니다. (종류: Windows, Linux, UNIX, MS-DOS 등이 있습니다.) ▶ 운영체제의 역할을 간단하게 말씀해주세요. 1. 프로세스 관리 프로세스, 스레드 스케줄링 동기화 IPC 통신 2. 저장장치 관리 메모리 관리 가상 메모리 파일 시스템 3. 네트워킹 TCP/IP 기타 프로토콜 4. 사용자 관리 계정 관리..

[운영체제] 교착 상태(데드락, Deadlock) - 5/5

교착 상태 (데드락, Deadlock) 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 일컫습니다. 교착상태를 해결하는 것도 운영체제의 중요한 역할입니다. 교착 상태가 발생했을 때 해결하기 위해선 두 단계의 작업이 필요합니다. 1. 교착 상태가 발생했을 때의 상황을 정확히 표현할 줄 알아야 합니다. 2. 교착 상태가 일어나는 근본적인 이유를 확인합니다. 교착 상태 상황 확인 자원 할당 그래프 교착 상태가 왜 발생하는지 대략적으로 파악할 수 있습니다. 어떤 프로세스가 어떤 자원을 할당받아 사용 중인지 확인 가능 어떤 프로세스가 어떤 자원을 기다리고 있는지 확인 가능 그리는 방법은 매우 쉽습니다. 첫째, 프로세스는 원으로 자원의 종류는 사각형으로 표현합니..

[운영체제] 프로세스와 스레드의 동기화 - 4/5

⭐ 동기화 동시다발적으로 실행되는 프로세스, 스레드는 서로 협력하며 영향을 주고받습니다. 이 과정에서 자원의 일관성을 보장해야 하는데, 이때 필요한 과정이 동기화입니다. * 프로세스 동기화라고 해도 스레드 또한 동기화 대상입니다. 목차 동기화 정의 동기화가 왜 필요할까 동기화를 하지 않을시 발생하는 문제점 동기화를 위한 도구들 (프로세스) 동기화 정의 동기화는 크게 두 가지를 의미합니다. 실행 순서 제어를 위한 동기화 프로세스들을 올바른 순서대로 실행하기 위한 동기화 상호 배제를 위한 동기화 동시에 접근해서는 안 되는 자원에 하나의 프로세스만 접근하게 하는 동기화 실행 순서 제어를 위한 동기화 발생하는 동기화 문제 : reader writer problem 두 프로세스가 있다고 가정하겠습니다. 하나는 W..

[운영체제] CPU 스케줄링 알고리즘 - 3/5

CPU 스케줄링이란? 운영체제가 프로세스들에게 CPU 자원을 배분하는 과정입니다. 그럼 어떤 기준으로 CPU 스케줄링을 해야 할까요? 프로세스는 우선순위가 존재합니다. 이는 사용자가 설정할 수도 있고 운영체제가 정할 수도 있습니다. 예를들어) 입출력 작업이 많은 프로세스 (= 입출력 집중 프로세스)의 우선순위는 CPU 작업이 많은 프로세스 (= CPU 집중 프로세스)의 우선순위보다 높습니다. 왜 그럴까요? 입출력 집중 프로세스는 CPU 집중 프로세스보다 대기하는 시간이 많습니다. 대기상태엔 CPU를 사용하지 않는 상태이므로 입출력 집중 프로세스의 우선순위를 높여서 빨리 처리를 해버림으로써 CPU 집중 프로세스에 CPU를 집중적으로 할당할 수 있게 됩니다. 즉, 입출력 집중 프로세스한테 먼저 CPU를 할당..

[운영체제] 프로세스와 스레드 - 2/5

프로세스란? 프로세스 종류 1. 포그라운드 프로세스(foreground process) 사용자가 볼 수 있는 공간에서 실행되는 프로세스로 사용자가 보는 앞에서 실행됩니다. 예: 게임, 메모장, 웹 브라우저 등이 있습니다. 2. 백그라운드 프로세스(background process) 사용자가 볼 수 없는 공간에서 실행되는 프로세스입니다. 사용자와 직접 상호작용이 가능한 백그라운드 프로세스 사용자와 상호작용하지 않고 정해진 일만 수행하는 프로세스 = 데몬(daemon), 서비스(service) 모든 프로세스는 실행을 위해 CPU가 필요하지만 CPU자원은 한정되어 있습니다. 따라서 프로세스들은 돌아가면서 자신에게 정해진 시간만큼 CPU를 이용하고 타이머 인터럽트가 발생하면 다른 프로세스에게 CPU차례를 양보하..

[운영체제] 운영체제는 프로그램이다?! - 1/5

면접 스터디 주제인 '운영체제'를 더 잘 이해하기 위해 도서와 영상을 통해 정리해 보고 마지막에는 핵심 질문을 뽑아보는 시간을 가져보도록 하겠습니다. 전공자 분들과 스터디를 하다 보니 간단한 대화 속에서도 배우는 점도 많고 저 또한 깊게 배우고 싶다는 의지가 활활 불타오르고 있습니다. 자리를 빌어서 감사 말씀드립니다. 지훈 님, 민지 님 감사합니다.👊 때리는 게 아닌, Hey~ Bro~ 느낌...... 그 중에서도 chapter 9 ~ chapter 13 부분을 다루어보도록 하겠습니다. 목차 Chapter 09 운영체제 시작하기 09-1 운영체제를 알아야 하는 이유 __운영체제란 __운영체제를 알아야 하는 이유 09-2 운영체제의 큰 그림 __운영체제의 심장, 커널 __이중 모드와 시스템 호출 __운영체..

MyBatis와 JPA의 차이, JPA를 선택한 이유는

현재 면접 스터디를 진행 중에 있습니다. 개인 프로젝트 관련해서 받았던 질문들 중 대답을 잘하지 못했던 부분들은 따로 정리하고자 합니다. 질문 이력서에 기재된 두 포트폴리오를 통해 JPA와 Mybatis 모두 사용해 봤던데, 기술의 차이점이나 Mybatis나 JPA를 쓰실 때 어떤 이점을 기대하고 사용하신 건지 말씀해 주세요. 😅 어떤 생각으로 두 기술을 사용했냐면.. 국비 과정에서 팀 프로젝트를 할 땐 배웠던 게 Mybatis여서 다른 선택지를 고려하지 않고 사용했습니다. 그 당시 코드를 작성할 때 느꼈던 점은 여기저기 클래스마다 sql을 작성했기에 정작 중요한 로직을 한 눈에 파악하기 어렵고 복잡했다는 것입니다. 다행히 프로젝트는 성공적으로 끝났지만 유지보수를 어디서부터 해야 할지 막막해서 포기했습니..

JPA와 Spring data JPA 차이점 (+ Hibernate)

현재 면접 스터디를 진행 중에 있습니다. 개인 프로젝트 관련해서 받았던 질문들 중 대답을 잘하지 못했던 부분들은 따로 정리하고자 합니다. 질문 Skills 소개란에 JPA, Spring Data JPA 적혀있는데 둘의 차이점을 알고 있나요? 😅 사실.. 비슷해 보이는 용어의 차이점을 알고 있는지 확인하는 질문입니다. 개인 프로젝트를 진행하면서 JPA와 Spring data JPA를 사용했지만 그당시 명확한 차이점을 말할 수 없었습니다. 왜일까..? JPA 공부를 하다보면 EntityManager를 통해 entity관련 CRUD를 한다고 나와있습니다. 하지만 저의 경우 실제 애플리케이션 코드 구현시 EntityManager를 사용하지 않고 Repository 인터페이스를 사용했었는데요. 이유가 어떻든 사용..

JPA Entity클래스에서 id를 int가 아닌 Long 타입으로 하는 이유

현재 면접 스터디를 진행 중에 있습니다. 개인 프로젝트 관련해서 받았던 질문들 중 대답을 잘하지 못했던 부분들은 따로 정리하고자 합니다. 질문 코드를 봤는데, 개인 프로젝트에서 엔티티 id가 전부 int형을 썼던데 이유가 있었는지 궁금합니다. 🤔 해당 프로젝트를 할 때는 인지하지 못했지만, 다른 분들의 코드를 보면 JPA Entity 클래스에서 id를 Long타입으로 설정한 것을 심심치 않게 볼 수 있었습니다. 그런데 왜 long이 아닌 왜 Long타입을 사용했을까요? 구글링을 했을 때, 크게 두 가지 이유로 Wrapper Class(Long)을 선호한다는 것을 알게 되었습니다. 1. null을 사용할 수 있다. primitive type은 기본값이 0입니다. 그럼 id가 없을 때는 나타낼 수 없게 됩니..