Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20210727] 운영체제 정리, gradle 7+ compile -> implementation, runtime -> runtimeOnly #185

Open
JuHyun419 opened this issue Jul 27, 2021 · 0 comments
Assignees
Labels
CS Computer-Science Spring

Comments

@JuHyun419
Copy link
Owner

JuHyun419 commented Jul 27, 2021

📝 운영체제(OS, Operating System)

image

운영체제(OS)란?

  • 운영체제는 컴퓨터의 모든 하드웨어 및 기타 소프트웨어를 관리하는 기본 소프트웨어
  • 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간 인터페이스로서 동작하는 시스템 소프트웨어의 일종
  • 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공
  • 운영체제는 컴퓨터 하드웨어가 다른 모든 소프트웨어와 효과적으로 통신할 수 있도록 하는 가장 중요한 컴퓨터의 소프트웨어

운영체제 구성

  • 운영체제는 커널(Kernel)쉘(Shell) 로 구성됨

커널(Kernel)

  • *부팅 시 *부트로더에 의해 메모리에 적재되어 메모리에 상주하는 운영체제의 핵심
  • 운영체제 기능의 대부분이 커널에서 실행
  • 운영체제에서 가장 중요한 요소로 입출력 관리, 컴퓨터의 자원(디스크, 메모리, H/W)을 할당해주는 역할

image
참고

*부팅: PC가 켜진 후 운영체제가 실행되기 전까지 수행되는 일련의 작업 과정 
*부트로더: 커널을 메모리에 로드하고 최종적으로 OS를 읽어내는 역할 
  • 🤔 커널은 왜 필요할까?
컴퓨터의 전원을 키면 운영체제는 이와 동시에 수행된다.
소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 해당 프로그램이 적재가 되어야 한다.
마찬가지 운영체제 자체도 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라가야 한다.
하지만, 운영체제처럼 규모가 큰 프로그램이 전부 메모리에 적재된다면 한정된 메모리의 공간 낭비가 심할 것이다.
따라서 운영체제 중 항상 필요한 부분만 전원이 켜짐과 동시에 메모리에 올려놓고, 그 외의 부분은 필요할 때 메모리에 올려서 사용한다.
이때 메모리에 상주하는 운영체제의 부분을 커널이라고 한다. 또한 이것을 좁은 의미의 운영체제라고도 한다.
https://goodmilktea.tistory.com/23

쉘(Shell)

  • 커널과 반대의 개념
  • 사용자가 터미널에서 입력한 명령을 해석하고 관리하여 사용자와 커널 사이를 연결하는 역할

쉘의 기능

  • 명령어 해석기 기능
    • 사용자가 입력한 명령어를 기계어로 해석 및 번역하여 커널에 전달
    • 커널에서 수행한 결과를 다시 번역하여 사용자에게 전달하는 역할
  • 프로그래밍 기능
    • Shell Script를 작성하여 반복적으로 수행하는 작업을 하나의 프로그램으로 만들 수 있음
  • 사용자 환경설정 기능
    • 파일의 권한 설정 등을 초기화 파일에 저장하여 사용자가 로그인할 때 마다 초기 설정이 반영되도록 설정이 가능함

image
참고


운영체제 시스템 호출(System Call)

  • 운영체제는 다양한 서비스들을 수행하기 위해 하드웨어를 직접적으로 관리
  • 이와는 다르게 응용프로그램은 운영체제가 제공하는 인터페이스를 통해서 자원을 사용할 수 있음
  • 운영체제가 제공하는 이러한 인터페이스를 시스템콜 이라고 함
  • 운영체제가 각 기능을 사용할 수 있도록 함수 또는 명령을 제공하는 것
  • API 내부에는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분
1) 응용 프로그램이 실행돼서 운영체제 기능이 필요한 API를 호출
2) 시스템 콜이 호출되어서 커널모드로 변경되어 OS 내부에서 해당 명령이 실행되고,
3) 다시 응용 프로그램으로 돌아감

image


운영체제의 종류

image

  • Windows(개인용), Unix, Linux(서버용)
  • ios, Android, MacOS

운영체제의 목적

  • 운영체제의 목적은 처리능력 향상, 반환시간 단축, 사용가능도 향상, 신뢰도 향상 등이 있음
  • 이와 같이 처리능력, 반환시간, 사용가능도, 신뢰도는 운영체제의 성능을 평가하는 기준
    • 처리능력(Throughput) - 일정 시간 내에 시스템이 처리하는 일의 양
    • 반환시간(Turn Around Time) - 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
    • 사용가능도(Availability) - 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
    • 신뢰도(Reliability) - 시스템이 주어진 문제를 정확하게 해결하는 정도

운영체제의 기능

  • 프로그램 실행
    • 운영체제는 사용자 프로그램이든 시스템 프로그램이든 모든 종류의 프로그램을 실행하는 책임이 있음
    • 운영체제는 모든 유형의 기능을 효율적으로 실행하기 위해 사용 가능한 다양한 리소스를 활용
  • 입출력 작업 처리
    • 운영체제는 키보드, 마우스, 데스크톱 등 모든 종류의 입력을 처리
    • 운영체제는 모든 종류의 입출력과 관련해 적절한 방식의 인터페이스를 수행
      • ex) 마우스, 키보드 같은 모든 유형의 장치는 특성에 차이가 있으며, 이들간의 데이터 처리를 운영체제가 담당
  • 파일 시스템 조작
    • 운영체제는 플로피 디스크, 하드 디스크, 펜 드라이브 등의 모든 유형의 데이터나 파일 저장소와 관련해 결정을 내릴 책임이 있음
    • 운영체제는 데이터가 조작되고 저장되는 방법을 결정
  • 오류 감지 및 처리
    • 운영체제는 작업 중 발생할 수 있는 모든 유형의 오류나 버그 감지를 담당
    • 보안이 잘 된 OS는 때때로 외부 소스에서 컴퓨터 시스템에 대한 모든 종류의 침해를 방지하고 처리하기 위한 대응책 역할
  • 자원 할당
    • 운영체제는 어떤 자원을 누구에게 얼마동안 사용할 것인지 결정하여 사용 가능한 모든 자원을 적절하게 사용하도록 함
    • 모든 결정은 운영체제에 의해 결정됨
  • 추적
    • 운영체제는 컴퓨터 시스템에서 발생하는 모든 기능들에 대해 추적
    • 발생한 오류 유형과 같은 모든 세부 정보는 운영체제에 의해 기록됨
  • 정보 및 리소스 보호
    • 운영체제는 시스템에서 사용할 수 있는 모든 정보와 리소스들을 가장 보호된 방식으로 사용할 책임이 있음
    • 운영체제는 모든 종류의 데이터 및 정보를 방해하려는 외부 리소스의 시도를 막아야 함
  • 즉, 운영체제는 컴퓨터의 성능(performance)을 높이고, 사용자에게 편의성(convenience)을 목적으로 하는 컴퓨터 하드웨어 관리 프로그램



References



Gradle 7+ 버전에서는 compile 대신 implementation을, runtime 대신 runtimeOnly을 사용

image

@JuHyun419 JuHyun419 added the CS Computer-Science label Jul 27, 2021
@JuHyun419 JuHyun419 self-assigned this Jul 27, 2021
@JuHyun419 JuHyun419 changed the title [20210727] 운영체제 정리[20210727] 운영체제 정리 [20210727] 운영체제 정리, gradle 7+ compile -> implementation, runtime -> runtimeOnly Jul 27, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CS Computer-Science Spring
Projects
None yet
Development

No branches or pull requests

1 participant