CS - 3 (운영체제/SW공학)

김민주·2022년 11월 4일
0

CS

목록 보기
3/3

운영체제

운영체제란

  • 컴퓨터 시스템 자원들을 효율적으로 관리
  • 응용 프로그램과 HW간의 인터페이스
  • 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 SW

프로세스/ 스레드

프로세스

  • 메모리 상에서 실행중인 작업
  • 코드(명령), Data(변수,배열), Heap(동적할당), Stack(지역변수,매개변수,리턴값)을 독립적으로 할당받음
  • 자신만의 고유공간과 자원을 할당받아 사용

스레드

  • 프로세스 안에서 실행되는 흐름의 단위
  • Stack만 할당 받음
  • 다른 스레드와 공간과 자원을 공유하면서 사용

멀티 스레드

  • 하나의 응용프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
  • 스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리함
  • 시간/자원 손실 감소, 자료 공유 가능
  • 하나의 스레드가 공유 데이터 값을 변경하는 시점에 대한 안전성 단점은 Critical Section으로 대비(동기화에 신경쓰자)
    => 프로세스를 생성하여 자원을 할당하는 시스템 콜이 감소하여 자원의 효율적 관리가 가능

SW공학

TDD(Test Driven Development)

  • 테스트 케이스를 먼저 작성한 후 실제코드를 개발
  • 자동화 도구를 이용한 TDD 테스트 케이스를 Unit Test로 사용

OOP(Object Oriented Programming)

  • 객체지향 프로그래밍
  • 객체 내부에 필드와 메소드가 함께 존재하기 때문에 객체 간의 독립성이 생기고 중복코드가 줄어듦
  • 추상화/캡슐화(낮은 결합도,정보은닉 private)/상속/다형성

객체 지향 설계 원칙

SOLID

  • SRP: 클래스는 단 한 개의 책임을 가짐
  • OCP: 확장에는 열려있고 변경에는 닫혀있어야 함
  • LSP: 상위type객체를 하위type객체로 치환해도 상위type를 사용하는 프로그램은 정상적으로 작동해야 함
  • ISP: 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 함
  • DIP: 고수준 모듈은 저수준 모듈의 구현에 의존하면 안됨

AOP(Aspect Oriented Programming)

  • 관점 지향 프로그래밍
  • 각 클래스에서 공통 관심 사항을 구현한 모듈에 의존관계를 갖기 보다 핵심 로직을 구현한 각 클래스에 공통 기능을 적용함
  • 공통기능을 여러 클래스에 적용할 수 있는 장점

DAO(Data Access Object)

  • DB에 데이터를 조회하거나 조작하기 위한 객체

DTO(Data Transfer Object)

  • 계층 간 데이터 교환을 하기위해 사용하는 객체
  • 로직을 가지지 않는 순수한 데이터 객체(getter&setter만 보유)

VO(Value Object)

  • 값 오브젝트로 읽기전용임
  • DTO와 비슷하지만 VO는 값 변경 불가능




참고
: https://github.com/gyoogle/tech-interview-for-developer
: https://melonicedlatte.com/2021/07/24/231500.html



profile
𝐃𝐨𝐧'𝐭 𝐛𝐞 𝐚 𝐩𝐫𝐨𝐜𝐫𝐚𝐬𝐭𝐢𝐧𝐚𝐭𝐨𝐫💫

0개의 댓글