여러 작업을 수행하는 애플리케이션, 소프트웨어의 계층 구조

강인호·2022년 8월 10일
0

cs스터디

목록 보기
16/17

애플리케이션은 운영체제를 플랫폼으로 삼아 작업을 수행하는 온갖 종류의 프로그램이나 소프트웨어 시스템을 총칭하는 용어다.
애플리케이션은 클수도, 작을수도 있으며 하나의 과제를 집중할수도 폭넓은 기능을 처리할 수도 있다. 판매될 수도 있고 무료로 배포될 수도 있다 소유권이 강하게 보호되거나 자유롭게 사용할수 있거나 하는등 사용에 아무런 제한이 없다.

워드 같은 애플리케이션은 파일 시스템 탐색용 프로그램보다 훨씬 더 규모가 크다. 사용자가 파일을 열고 내용을 읽고 파일 시스템에 문서를 저장할 수 있도록 파일 시스템 코드 일부가 분명히 포함될 것이다. 텍스트가 바뀜에 따라 디스플레이를 계속해서 갱신하기 위한 알고리즘도 필요할 것이고 정보를 화면에 표시하고 글자 크기 글꼴 색상 레이아웃 등을 조정하는 방법을 제공하는 정교한 사용자 인터페이스를 지원한다.

브라우저는 규모가 크고 무료이며 간혹 오픈소스로 개발되는 애플리케이션으로 어떤 측면에서는 다른 애플리케이션보다 훨씬 더 복잡하다.(파이어폭스 사파리 엣지 크롬 등등)


브라우저가 웹서버로부터 요청을 받는 과정

브라우저는 비동기적 이벤트를 처리해야 한다. 비동기적 이벤트란 예측할 수 없는 시점에 일정한 순서를 따르지 않고 발생하는 이벤트를 뜻한다. 비동기적 이벤트란 예측할 수 없는 시점에 일정한 순서를 따르지 않고 발생하는 이벤트를 뜻한다.
서버로부터 요청을 보내고 받을때까지 다른작업을 중단할수는 없으니까 해당 부분만 비동기적으로 처리를 해야한다.

컴퓨터 분야의 다른 많은 것과 마찬가지로 소프트웨어는 계층으로 구성된다 이 계층은 서로의 관심사를 구분 짓는다.
계층화는 프로그래머가 복잡성을 처리하는 데 도움이 되는 중요한 아이디어 중 하나다. 각 계층은 맡은 기능을 구현하고 그 상위 계층이 서비스에 접근하는데 사용할수있도록 추상화를 제공한다.

가장 밑바닥에는 하드웨어가 있다. 하드웨어는 거의 변경할 수 없다.

다음 계층은 엄밀한 의미의 운영체제로 핵심적인 기능을 암시하기 위해 흔히 커널이라고 한다.
운영체제는 하드웨어와 애플리케이션 사이에 있는 계층이다.
하드웨어의 종류와 무관하게 하드웨어의 특수한 속성을 숨기고 애플리케이션에는 특정 하드웨어의 여러 가지 세부 사항과 독립된 인터페이스 또는 외관을 제공한다.

운영체제 다음 계층은 라이브러리 집합으로 프로그래머 개개인이 기능을 새로 만들어 낼 필요가 없도록 일반적으로 유용한 서비스를 제공한다. 라이브러리는 API를 통해 사용할 수 있다. 아주 기본적인 기능을 처리하는 라이브러리부터 복잡한 기능을 처리하는 라이브러리까지,
GUI(그래픽 사용자 인터페이스)구성요소는 많은 코드를 필요로 한다. GUI구성요소가 라이브러리에 있으면 누구나 사용할 수 있어서 균일한 디자인을 보장하는 데 도움이 된다. 그래서 대부분의 윈도우 애플리케이션이나 기본 그래픽 구성 요소가 비슷해 보이는 것이다.

가끔은 커널, 라이브러리 애플리케이션 간의 구분이 명확하지가 않다. 소프트웨어 구성요소를 만들고 연결하는 방법에는 경우의 수가 많기 때문이다. 운영체제와 애플리케이션 사이의 경계는 뚜렷하게 정의되어 있지 않다.
그 경계선은 어떤 애플리케이션이 다른 애플리케이션의 동작에 간섭하지 않도록 하는 데 필요한 것은 무엇이든 운영체제의 역할에 속한다는 것이다.
다른 애플리케이션을 제어하는 일 자체가 운영체제의 범주에 들어간다고 정의를 해놓았다.

0개의 댓글