운영체제는 무엇이고, 개발자는 왜 운영체제를 알아야 하는 것일까?
컴퓨터의 부품들은 전기만 공급하면 알아서 작동하지 않는다.
모든 프로그램은 실행을 위해 자원(Resource)를 필요로 한다.
- 프로그램 실행해 있어 필요한 요소 (컴퓨터의 네 가지 핵심 부품 포함_ CPU, RAM, ROM, I/O)
운영체제는?
- 실행할 프로그램에 필요한 자원을 할당
- 프로그램이 올바르게 실행되도록 도와주는 특별한 프로그램
운영체제의 메모리 관리
메모리에 크게 커널 영역/ 사용자 영역이 있다면
운영체제는 커널 영역에 적재되는 프로그램이다.
사용자 영역에는 응용 프로그램(application software)_사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
(엑셀, 워드, 계산기 등) 우리가 만드는 앱!
만약 엑셀을 실행해서 사용자 영역에 적재됐을 경우.. 엑셀이 어디에 적재 되는지(메모리 주소)는 어떻게 정해지는 것일까?
-> 운영체제가 메모리를 보고 비어있는 공간에 알아서 적재해줌. (앱을 끄면 메모리에서 해제도 해줌)
운영체제의 CPU 관리
일반적인 사용 환경에서 여러 개의 프로그램을 동시에 실행하는 경우가 많음.
(정말 at the same time의 개념 보다는, 너무 빨라서 우리가 인지하지 못할 정도로 번갈아 가며 실행된다 라고 보는게 맞음)
만약 엑셀, 워드, 계산기를 같이 실행한다면 CPU는 세 가지 프로그램을 아주빠르게 번갈아가며 실행하고 있는 것.
CPU가 어떤 프로그램을 먼저 실행해야 하는 지, 얼마나 오래 실행해야 하는지? 이것도 운영체제가 결정한다.
feat. A16 Bionic
운영체제의 입출력장치 관리
워드 파일을 프린터로 출력하고 있는 상황에서, 메모장의 메모를 출력하려고 하면 문제가 생길 수 있다.
이미 프린트는 출력 태스크가 있기 때문에. 따라서 워드가 프린트 쓰고 있으니까 메모장은 기다려!라고 말하는 것도 운영체제이다.
운영체제의 보조기억장치 관리
ROM(보조기억장치)에 있는 데이터들을 파일,디렉토리의 형태로 관리하는 역할도 한다.
운영체제는 하드웨어와 응용 프로그램 사이의 중간다리 역할을 한다고 볼 수 있다. 아이폰 - iOS - 앱
운영체제는 컴퓨터의 자원을 효율적으로 관리하기 위해 존재한다.
컴퓨터의 자원(CPU, 메모리, 하드디스크, 입출력장치 등)을 응용 프로그램에 효율적으로 분배하는 역할로 보면 됨.
(CPU, 프로세스, 파일 시스템, 메모리 관리 등)
* 실행되고 있는 프로그램을 프로세스라고 함.
만약 운영체제가 없다면??
운영체제 없이! 1과 2를 더해서 3을 모니터에 출력하는 프로그램을 만든다고 가정하자.
1. 프로그램을 메모리에 적재하는 코드
2. CPU가 1과 2를 연산하게 하는 코드
3. 모니터에 계산 결과를 출력하게 하는 코드 등..
수 많은 코드를 개발자가 직접 구현해야 한다.
운영체제가 있기 때문에 개발자가 하드웨어에 접근하는 코드를 직접 작성할 필요가 없다.
파일 시스템을 활용하는 것도, 하드 디스크에 직접 접근하는 것이 아니라 운영체제를 거쳐서 가능한 것.
print문도 운영체제의 도움을 받아서 실행되는 함수라고 볼 수 있음.
ex. 운영체제는 콘솔의 역할을 수행하는 터미널을 제공하며, 개발자는 이 터미널을 통해 콘솔로그를 확인할 수 있다.
Xcode는 macOS 운영체제 위에서 동작하므로, 개발자가 Xcode에서 print를 사용하여 출력한 로그는 macOS 운영체제의 터미널에서 확인할 수 있는 것.
운영체제가 많은 일들을 해주는데 굳이 운영체제를 왜 알아야 할까?
운영체제는 사용자가 아닌, 프로그램을 위한 프로그램이다.
그렇기 때문에 프로그램을 만드는 개발자는 운영체제를 알아야 하는 것.
(아이폰을 그냥 사용하는 사람이라면 iOS를 굳이 몰라도 되지만, iOS앱을 만드는 개발자는 당연히 알고 있어야 하는 것..)
에러 없이, 메모리 덜 먹고, 빠르고 효율적인 앱을 만들려면 운영체제를 알아야겠지!
CPU와 같은 부품들은 정말 하드웨어 부품이기 때문에 고장나면 뜯어보고 해야 하지만,
운영체제는 프로그램이기 때문에 '오류 메세지'를 통해서 문제에 대한 체크가 빠르다.
하드웨어에 문제가 있거나, 응용 프로그램에 문제가 있을 때 그 중간에는 운영체제가 있기 때문에
운영체제의 에러 메세지를 잘 파악하면 문제를 빠르게 해결할 수 있다.
iOS에 대해 간단하게 알아보자.
iOS는 애플(Apple)이 개발한 '모바일 운영체제'로 iPhone, iPod에서 실행된다.
(이전에는 아이패드에서도 iOS였지만, iPad OS가 나와서 이제는 다른 운영체제다. 맥북은 Mac OS, 워치는 Watch OS)
iOS의 주요 특징은 아래와 같다.
1. 유저 인터페이스
iOS는 터치 기반의 직관적인 UI를 제공함.
유저는 멀티 터치, 제스쳐 등을 사용해서 앱을 조작하고 상호작용 할 수 있음.
아이콘 기반의 홈 스크린, 푸쉬 알림, 제어 센터, 노티피케이션 센터 등 다양한 인터페이스 요소가 포함되어 있음.
2. 앱 생태계
iOS는 App Store를 통해 다양한 앱을 제공한다.
개발자는 iOS SDK(Software Development Kit)을 사용해서 iOS 앱을 개발하고, 이를 앱스토어에 배포할 수 있다.
* Xcode는 애플의 공식 통합 개발 환경(IDE)으로 iOS SDK를 포함하고 있고, 앱개발을 위한 다양한 툴과 프레임워크를 제공함.
3. 보안
아이폰 하면 보안!
iOS는 암호화된 파일 시스템, 애플 키체인 시스템 등을 통해 유저의 데이터를 보호하고, 악성 소프트웨어로부터 공격을 방지한다.
4. 성능과 최적화
예전 같지는 않은 것 같지만
iOS는 아이폰에 정말 최적화된 운영체제이다. 애플은 하드웨어와 소프트웨어 통합을 통해 항상 최고의 성능을 제공하려 노력한다.
iOS는 부드럽고 반응성이 뛰어나며, 배터리를 효율적으로 관리해서 아이폰을 오래 사용할 수 있게 한다.
5. 통합 생태계
애플하면 연동성!
iOS는 다른 애플 생태계와 강력한 연동성을 자랑한다. iCloud를 통해 데이터 동기화, 백업, 공유가 가능하고 다른 애플기기
(맥북, 아이패드, 워치 등)과 원활한 연동을 지원한다. 또한 Siri, Apple Pay, Apple Music, iMessage등 애플만의 특별한 기능과 서비스도 사용할 수 있다.
첫 아이폰이 아이폰4였는데..
그 때는 iOS 4.0이었다 ㅋㅋㅋ
근데 얼마 전 WWDC23에서 iOS17이 발표된 것을 보고 정말 시간이 빠르게 느껴졌다 하하..
'Computer Science > 운영체제' 카테고리의 다른 글
5. CPU 스케줄링 (0) | 2023.08.29 |
---|---|
4. 스레드 (0) | 2023.08.29 |
3. 프로세스 상태와 계층 구조 (0) | 2023.08.28 |
2. 프로세스 개요 (0) | 2023.08.27 |
1. 운영체제 intro (0) | 2023.08.27 |