[Day 9-10] 4/27~28 (토픽4) 소프트웨어 이해하기 ②

sonffani·2021년 4월 26일
1
post-thumbnail

운영 체제 개요

애플리케이션을 도와주는 프로그램, 운영 체제


프로그램의 한 종류
애플리케이션 혼자 할 수 없음. 다른 프로그램의 도움이 필요함
게임 - 부품을 통해서,

눈에 보이지 않는 프로그램 = OS (Operating System)
컴퓨터 OS : 윈도우 10, macOS, 리눅스
핸드폰 OS : Android, iOS

전원을 켜자마자 운영체제부터 실행시킴, why?
운영체제의 역할을 알아봅시다.

운영체제의 역할 (입력과 출력)


첫번째 역할은 입력과 출력 관리
사용자 입장에서 컴퓨터는 입력 장치(키보드 마우스)와 출력 장치(화면)로 이뤄져있음
장치선을 연결했다고 되는게 아님, 이면에서 운영체제에서 매끄럽게 연결
제조사 다름, 버튼 개수 다름, 마우스, 웹캡, 무선 여부 등 다 달라서 경우의 수가 끝도 없어- 운영 체제가 여러 제조사& 연결방식을 다 정리해서 신호 넘겨줌
애플리케이션 개발자는 애플리케이션 본연의 개발에 더 집중 가능
운영 체제에서 중간 단계에서 중요한 역할을 한다.

운영체제의 역할 (저장과 불러오기)


저장과 불러오기

내가 인터넷을 막 서핑하면 브라우저 어디에다 기록해놓음
다운하면 하드디스크에 저장
복사, 클립보드에 저장, 붙여놓기
같은 저장인데도 특징이 다름

여러가지의 저장 장치가 있음

두가지 타입의 저장
휘발성 : 컴퓨터가 켜져있는 동안만 저장되는 정보
ㄴ 저장 공간은 제한적, 모든 정보를 다 저장할 수는 없음
ㄴ 켜져 있는 동안에만 보관
ㄴ RAM

비휘발성 : 컴퓨터가 꺼지더라도 남아있은, 파일로 저장, 전원이 꺼지더라도 보관
ㄴ 하드디스크 (비휘발성)
ㄴ 영화나 용량이 큰 프로그램은 하드디스크같은 비휘발성 저장 장치에 저장

읽고 쓰는 속도
빠른건 좋긴 하지만 비쌈
빠른 저장장치는 64KB, 느린 저장 장치 1,024GB (이 판단을 운영체제가 함)

데이터 수정 가능 or 불가능
수정 가능 - 영화, 문서, 사진
수정 불가 - 컴퓨터 기본 셋팅 (리드 온리 메모리 ROM)

운영체제의 역할 (여러 프로그램 동시에 빠르게 실행하기)

멀티태스킹
우리는 많은 애플리케이션을 동시에 사용합니다.
노래 듣고, 메신저 사용하고, 웹서핑하고, 문서 작업을 합니다.

여러 프로그램을 실행하다 보면 마주칠 수 있는 문제
애플리케이션은 그 사이에서 조율 해주는 역할
효율적으로 잘게 나눠서 일 시킴, 사람이 못 느끼게
최대한 효과적으로 해야 컴퓨터가 빨라짐

운영체제의 종류

운영체제는 모든 컴퓨터에 필요한 부분
컴퓨터Windows/macOS + 모바일Android/iOS + Linux
훨씬 더 많은 종류가 있음

윈도우나 안드로이드는 사용자 설정을 더 쉽게 바꿀 수 있음
외부 프로그램도 잘 바꿀 수 있기에 편리하지만 바이러스에 취약함
맥이랑 아이오에스는 보안이 철저한 대신에 환경설정의 선택지가 제한되어있음

운영체제는 크게 네종류로 나눌 수 있음
1. 데스크톱/랩톱
윈도우 시리즈, MacOS, 리눅스 같은게 있음
사용하는 점유율을 살펴보면, 윈도우즈가 87.76%로 압도적

  1. 모바일
    태블릿과 워치에서도
    각기계의 생김새가 다르지만, 비슷한 느낌으로 사용할 수 있도록 지원 많이해줌
    안드로이드 75%

  2. 서버
    큰 데이터 사용, 웹사이트 사용
    구글 드라이브에 저장, 구글 서버에 저장
    안정성, 속도, 효율이 가장 중요!
    점유율 우분투, 유닉스

  3. 임베디드

기계에 들어감
ATM, 포스, TV, 항공기
실시간 운영 체제 (Real-time operating system, RTOS)

리듬게임 방해 받으면 안됨
로켓도 방해 받으면 안됨

총합은 짧지만 특정 단계가 오래 걸릴 수 잇은 < 세 단계 다 걸리는 시간이 동일 -> 안정적

운영체제의 발전 역사


유닉스

지금까지 용도나 특징에 따라 참 다양한 운영 체제가 있다는 걸 알아봤는데요,
ㅇ 컴퓨터에 사용되는 OS - 맥 OS, 리눅스
ㅇ 서버에 사용되는 운영체제 - 우분투, 리눅스, 레드햇, 프리BSD, CentOS, debian 등등
ㅇ 모바일OS - 안드로이드, iOS
사실상 하나의 뿌리
하나의 운영체제에서 출발
UNIX
컴퓨터 역사의 의미있는 흐름

벨 연구소의 켄톰슨 & 데니스 리치
유닉스 - 대부분 C언어로 작성, 다른 컴퓨터에 수정해서 적용이 쉬움의 특징 보유
유닉스와 C언어
유닉스 + 모방 => (표준)POSIX

  • Unix라면 갖춰야 할 규격과 기능이 정해졌음
    ㄴ 만족시 유닉스의 공식 버전으로 인증
    ex. 맥OS도 공식
    AT&T의 소유물이었음
    인증받는데도 돈 들었음

free software foundation (www.fsf.org) 자유 소프트웨어 재단
프로젝트 GNU시작
"Gnu is Not Unix - GNU는 Unix가 아니다"
ㄴ Unix의 코드를 한 줄도 사용하지 않고 만든 Unix와 유사한 OS
ㄴ 포식스는 만족하지만, 공식 인증은 아님, Unix-like
ㄴ GNU + Linux Kernel >>> GNU/Linux 완성하게 됨
*Kernel = =운영체제의 핵심 부분

Linux since 2015(with git)
누구나 사용! 누구나 변형!
ㄴ 최대 인원 프로젝트
ㄴ 1,400개 회사
ㄴ 15,0000명 넘는 사람 참여
ㄴ 인텔, IBM, 삼성, 구글, AMD, 오라클 등 참여
ㄴ 누구나 사용! + 누구나 변형! 마음대로 변형 ! 반드시 코드 공개!=> 수많은 변형 운영체제 등장!

리눅스 계열 운영 체제
스마트폰 82%, 임베디드 62%, 슈퍼컴퓨터의 99%

공유의 가치를 아는 오픈 소스의 힘!

네이티브 애플리케이션과 웹 애플리케이션

플랫폼의 파편화


승강장
프로그램이 실행되는 하드웨어, 소프트웨어 환경
각 플랫폼에 맞게 프로그램을 만들어야 함!
윈도우용 프로그램, 애플용 프로그램
CPU마다 사용하는 머신 코드 달라서 종류가 안 맞으면 실행이 안됨
플랫폼 의존성(Platform Dependency)

앱을 만드는 개발자의 고충

아이폰(1세대,2세대,3세대), 아이패드(1세대,2세대,3세대)

유지 보수 힘들어
플랫폼 의존성의 고충 = 플랫폼 파편화

이 문제를 어떻게 해결하지?

표준의 필요성

이어폰이 처음 나왔을 때를 생각해볼까요?
플랫폼문제는 있어왔어
해결책은 표준! 상호간의 약속
이런 방식으로 해결 할 수 있겠쬬?

크로스플랫폼 (가상머신)

플랫폼 파편화 문제를 해결하기 위해 나온 개념은 크로스 플랫폼 입니다.
여러 OS, CPU 등에서 동일하게 실행할 수 있는 환경


JAVA
Write Once, Run Anywhere!

가상의 컴퓨터 JVM (자바를 이용한 가상의 컴퓨터)

이식성, 범용성이 좋아서 지금의 인기를 얻게 됨

크로스플랫폼 (웹)

가상의 컴퓨터 JVM (자바를 이용한 가상의 컴퓨터)로 플랫폼 의존성을 해결할 수 있었던건 표준이 있었기 때문

접근성이 높고 간편함
각 기기에 최적화된 모습
웹은 더 간편하게 크로스 플랫폼을 만들 수 있음
반응형 웹 디자인

국제 표준화 기구
ISO
웹 표준

자바 스크립트가 대세


.js가 자바스크립트를 의미

스택 오버플로우
Jeff Atwood's LAW
jeff Atwood는 "자바스크립트로 작성될 수 있는 모든 애플리케이션은 결국에는 자바스크립트로 작성될 것입니다. "

웹의 단점
브라우저의 호환성

웹호환성이 100% 지켜지지 않는 이유

웹 표준 버전 =/= 웹 브라우저 버전
일부러 차별성을 위해서 웹 표준과 다르게 만들기도

얼마나 웹 표준을 잘 지키는지 확인 가능

브라우저, 버전에 따라서도 차이가 있음

네이티브 애플리케이션과 웹 애플리케이션


네이티브 애플리케이션 / 웹
기기의 OS에서 바로 실행 가능
웹의 시장 장악력은 높아지고 있음
웹의 기술 많이 발전해서 다양한 기능 가능
일반 앱처럼

실행 방식이 다름

ㅇ 네이티브 애플리케이션
ㄴ 설치와 배포를 반드시 거쳐야 함
ㄴ 단점 : 마켓에 올려, 새로운 버전으로 업데이트, 마켓에서 검수함

ㅇ 웹 애플리케이션
ㄴ 설치와 배포가 없음
ㄴ 실시간 반영
ㄴ 접근성이 더 좋음

ㅇ 웹앱
적은 투자와 노력으로 서비스를 런칭하고 싶은 회사들의 대안이 되고 있음

웹을 활용하는 여러 가지 방법

페이지를 보여주는 정도였음
웹 기술 발전
다양한 방식 응용 늘어남
1. 싱글페이지 어플리케이션
(페이지 이동이 없음)
페이스북, 지메일, 구글맵, 구글 드라이브, 트위터
2. 하이브리드 웹 어플리케이션
새로운 광고를 보려고 업데이트 하려고 하지 않음
자주 바꾸고 싶은 부분, 구멍 만들어서 웹페이지로 보여줌
정해진 특정 공간만 바꿀 수 있다는 단점
3. 프로그래시브 웹 어플리케이션
설치 없이 실행 가능
주소만 입력하면 접근 가능
실시간 업데이트
+네이티브 어플리케이션 요소

  • 인터넷 없이 실행가능
  • OS 기능사용 가능

ex.
https://app.starbucks.com/
https://www.pinterest.co.kr/

요즘 웹 개발자 수요가 넘쳐나는 이유!

profile
판교 어떤 IT회사에서 일하는 중. 개발 도전기 💪🏻

0개의 댓글