여러 작업을 수행하는 애플리케이션
애플리케이션 정의
- 운영체제를 플랫폼으로 삼아 작업을 수행하는 온갖 종류의 프로그램이나 소프트웨어 시스템을 총칭하는 용어
애플리케이션 특징
- 작을수도 있고 거대할 수도 있으며 하나의 특정과제에 집중하거나 폭넓은 여러가지 기능을 처리
- 또한 판매하거나 무료로 배포될 수도 있다.
- 코드의 소유권이 강하게 보호 또는 자유롭게 사용가능한 오픈소스, 아무레한 제한이 없는 경우도 있음
애플리케이션의 예시
1. date (유닉스 프로그램)
유닉스 시스템 - 디렉터리 내의 파일과 폴더를 나열하는 ls 프로그램(텍스트 전용 프로그램)
2. 워드
파일을 열고 내용을 읽고 저장할 수 있음
알고리즘 존재
텍스트가 바뀜에 따라 디스플레이를 계속 갱신
정보를 화면에 표현, 글자크기, 글꼴, 색상, 레이아웃 조정하는 방법(인터페이스)
위와 같이 상업적 가치가 높은 대형 프로그램은 새로운 기능이 추가되면서 지속적으로 발전(코드 1000만행)
만약 규모가 더 크고 무료 혹은 오픈소스로 개발되는 애플리케이션들은 더 복잡함.
브라우저는 웹 서버에 요처을 보내고 화면에 표시할 정보를 웹서버에서 받아 온다.
어떤점이 복잡할까?
비동기적 이벤트
예측할 수 없는 시점에 일정한 순서를 따르지 않고 발생하는 이벤트
자바스크립트 언어 자체를 나는 비동기적 언어로 알고 있었다. 하지만 자바스크립트는 동기적 언어이고, 이 언어가 브라우저 엔진에서 작동할 때 비동기적으로 처리 된다는 사실을 알았다. 이러한 비동기적 처리는 event loop로 인해 가능한 것이다.
즉, 사용자가 링크를 클릭하면 브라우저는 페이지에 대한 요청을 보냄
그 사이에 브라우저는 해당 응답을 기다리고만 있을 수 없음
왜?
그 사이에 사용자가 페이지를 스크롤하거나 뒤로가기 버튼을 누르면 즉각 반응해주어야 함
사용자가 창의 모양을 바꾸면 디스플레이를 갱신, 페이지에 소리나 동영상이 포함되었다면 그런 처리까지 해주어야한다.
동기와 비동기의 개념을 좀 더 알아보고 싶다면 https://koras02.tistory.com/87
브라우저의 기능과 역할
1.여러 개의 탭과 창을 관리할 때 각각 작업 중 일부를 수행
2. 북마크, 즐겨찾기 등으로 다른데이터를 유지하기도 하고 업로드 다운로드를 통해 로컬 파일 시스템에 접근하기도 함
브라우저는 기능을 확장하기 위한 플랫폼을 제공(어도비 플래시, Javascript, 고스터리 프로그램 등)
이 모든 기능을 수행하기 위해 복잡한 코드를 가지고 있으면 버그에 취약함
즉 브라우저는 운영체제와 비슷함
왜?
자원을 관리하고 동시에 일어나느 활동들을 제어하고 처리 및 조정한다.
다수의 출처에 정보를 저장하고 가져오며 실행가능한 플랫폼을 제공한다.
소프트웨어의 계층
각 계층은 관심사를 구분 짓고 맡은 기능을 구현하고 추상화를 제공한다.
운영체제의 관리 계층 구조 용어 설명
운영체제의 1 계층, 프로세서 관리에서는 동기화 및 프로세서 스케줄링을 담당(중앙처리장치의 순서를 담당)
운영체제의 2 계층, 기억장치 관리에서는 메모리의 할당 및 회수 기능을 담당. 메모리 할당이란 프로그램이 사용할 메모리 공간을 확보하는 것. 메모리 크기는 한정되어 있기 때문에, 이를 관리하는 역할
운영체제의 3 계층, 프로세스 관리에서는 프로세스의 생성, 제거, 메시지 전달, 시작과 정지 등의 작업을 담당, 실행 중인 프로그램의 프로세스를 생성, 각 프로세스별로 관리하고 프로그램을 동시에 작업할 수 있도록 해주며, 프로그램 종료 시 프로세스를 제거
운영체제의 4 계층, 주변장치 관리에서는 주변장치의 상태 파악과 입출력 장치의 스케줄링을 담당. 컴퓨터 주변 기기인 키보드, 프린트, 마우스 등 주변 장치와 입출력 장치의 스케줄링을 관리하는 역할
운영체제의 5 계층, 파일 관리에서는 파일의 생성과 소멸, 파일의 열기와 닫기, 파일의 유저 및 관리를 담당.
커널은 제어프로그램중에 항상 실행중인 프로그램
커널은 프로세서 관리, 메모리 관리, 프로세스 관리, 주변장치 관리, 파일 관리와 더불어 인터럽트 처리 또한 담당하는데, 인터럽트란 지금 하던 일을 멈추고 다음에 무슨 작업을 할지 결정하는 역할
운영체제에서 커널까지의 구조
각 서브시스템이 하나의 계층이 되어 하위층이 제공하는 서비스를 상위층의 서브시스템이 사용하도록 구성된다.
메모리관리 즉, 프로그램이 실행되는 동안 RAM이 어느 위치에 프로그램을 둘지 결정하는 일은 운영체제의 일!
즉 브라우저는 운영체제의 일부가 아니다(애플리케이션)
어떤 브라우저든 공유된 자원이나 제어 기능에 간섭하지 않으면서 하나 또는 여러개가 동시에 실행될 수 있기 때문이다.
References
'프로그래밍 > CS 지식' 카테고리의 다른 글
[인터넷] 프로토콜, 메커니즘 (0) | 2022.08.04 |
---|---|
작문과 비슷한 프로그래밍 (0) | 2022.07.28 |
Cookie 와 Cache (그리고 Session) (0) | 2022.07.23 |
하드웨어 (직접회로, 무어의법칙) (0) | 2022.07.20 |