Anything Is Possible

의존성 주입(Dependency Injection)

취업준비/면접준비

DI(의존성 주입)를 해야하는 이유는 ?

DI로 프로그램을 설계 했을 때, 다음과 같은 이점을 얻을 수 있습니다.

  • Unit Test가 용이해진다.
  • 코드의 재활용성을 높여준다.
  • 객체 간의 의존성(종속성)을 줄이거나 없엘 수 있다.
  • 객체 간의 결합도이 낮추면서 유연한 코드를 작성할 수 있다.

즉, 한 클래스를 수정하였을 때, 다른 클래스도 수정해야 하는 상황을 막아줄 수 있습니다.

※ DI, 의존성 주입은 필요한 객체를 직접 생성하는 것이 아닌 외부로 부터 필요한 객체를 받아서 사용하는 것이다. 이를 통해 객체간의 결합도를 줄이고 코드의 재활용성을 높여준다.

 

관심사 분리 (Separation of Concerns, SoC)

취업준비/면접준비

오늘은 관심사 분리에 대해 공부해보자!

* 관심사 분리란 ??

- 소프트웨어 상에서 구조를 패턴, 역할, 기능 등 각각 맞게 섹션 별로 분리해서 작성하는 것을 말합니다. 이때 주의 사항은 분리를 해서 작성을 했을시, 그 특성에 맞게 하나의 역할을 부여해서 작성해야 하는 것입니다. 즉, 코드를 작성할때 '관심사의 분리'란 하나의 역할 별로 분리를 해서 작성하는 것을 말합니다.

 

쉽게 말해! 치료는 의사에게, 주사는 간호사에게, 약은 약사에게 처럼 목적에 맞게 또는 상황에 맞게 역할을 분리해주는 것입니다. 

PCB and Interrupt(PCB와 인터럽트)

Programming/Java

PCB(Process Control Block, 프로세스 관리 블록) ?



  • 커널에 등록된 각 프로세스에 대한 정보를 저장하는 영역
  • 커널 공간(kernel space)내에 존재
  • OS는 PCB의 정보를 사용하여 프로세스를 관리


PCB의 구성

포인터 

프로세스의 현재상태 

 프로세스의 식별자

 프로세스의 우선 순위

 각종 레지스터

 기억장치 관리 정보

 입출력 정보

 기타 정보...



PCB에 저장되는 정보


  • 프로세스 고유번호(PID : Process Identification)
  • 프로세스 우선순위(Priority)
→ 우선순위 - 기반 스케줄링시 필요한 정보
  • 프로세스 현재 상태(Current state)
→ 프로세스가 할당받은 자원들의 리스트 또는 이들에 대한 한 포인터
  • 문맥 저장 영역(Context save area)
→ 실행중인 프로세스의 일시 중지 시 레지스터 문맥의 저장 영역

PCB에 저장되어야 할 정보는 운영체제에 따라 서로 다름
커널의 PCB 영역 참조 및 갱신 속도 개선은 시스템 전체 성능에 중요함




◇ 인터럽트와 문맥 교환 

인터럽트(Interrupt) ?

컴퓨터 시스템에서 예측하지 못했던 사건이 발생하는 상황을 말한다.



인터럽트의 일반적인 종류


  • 입출력 인터럽트(I/O interrupt)
  • 클럭 인터럽트(clock interrupt)
  • 콘솔 인터럽트(console interrupt)
  • 프로세스간 통신 인터럽트(interprocess communication interrupt)
  • 시스템 호출 인터럽트(system call interrupt, SVC interrupt)
  • 프로그램 오류 인터럽트(program check interrupt)
  • 하드웨어 검사 인터럽트(machine check interrupt







'Programming > Java' 카테고리의 다른 글

프로세스 상태 전이도(Process State Diagram)  (0) 2018.01.08
GitHub(깃허브) 사용법  (0) 2017.12.26
JAVA 메모리 구조  (0) 2017.12.21