OSの仕事

# 基本ソフトウェアの初め
コンピュータで何をしたいか?
例えばワープロやゲームをしたい。
それをするにはコンピュータの```５大装置を連携が必要```だ。
しかしコンピュータのそれらはワープロやゲームを知らないから動かない。
そこで```５大装置を動かすように誰かが仲立ち```をしなければいけない。
それが```OS```。
```コンピュータをコンピュータとして使えるようにする```のがOSの役目。
基本的な制御や管理を担当する。これを```基本ソフトウェア```と分類される。
初めのコンピュータで何をしたいかを実現するには```アプリケーション```と呼ばれるソフトウェア。
これは```応用ソフトウェア```に分類される。

## 気づき
プログラムはアプリケーションを作成するものだから応用ソフトウェアになる。
つまりその基本となる基本ソフトウェアを知っておかないとプログラムを書くときに何か必要な気がする。
勉強していこう。

# OS（Operating System)とは
コンピュータ内部のハードウェアやさまざまな周辺機器を管理するほけ、メモリ管理、ファイル管理、そしてワープロソフトなどのアプリケーションに今あなたが動作して良いですよと実行機械を与えるタスク管理などを行う。

# ソフトウェアの分類
ソフトウェアは大きく分けると、```応用ソフトウェア```と```システムソフトウェア```に分かれる。
応用ソフトウェアはワープロや表計算などの```各種アプリケーションソフト```
システムソフトウェアは```ミドルウェア```と```基本ソフトウェア```にまた分けられる。
ミドルウェアは```データベース管理ソフトウェア```や```各種支援ソフトウェア```など
```OS```や```言語プロセッサ```、各種サービスプログラムなど

## ミドルソフトウェアとは？
ある特定の用途に特化して、```基本ソフトウェアと応用ソフトウェアとの間の橋渡し```をするためのソフトウェア。
標準化されたインタフェースで```応用ソフトウェアから利用できる```ようにしたもの。

## 気づき
### 標準化とは
 * 標準に合わせること。また、標準に近づくこと
 * 何もしなければ多様化・複雑化し、無秩序になってしまう事柄について、秩序が保たれる状態を実現するために、誰もが共通して使用できる一定の基準を定めること。
 * 製品やサービスの品質・性能・安全性・互換性の確保、利便性の向上、試験・評価方法の統一などを目的として、統一された規格をつくる過程をいう。
 出典　https://www.weblio.jp/content/%E6%A8%99%E6%BA%96%E5%8C%96

* 標準化とは、『もの』や『事柄』の単純化、秩序化、試験・評価⽅法の統⼀により、製品やサービスの互換性・品質・性能・安全性の確保、利便性を向上するもの」
* ものの形状や、何かを実行する際の工程、それらを試験する方法などについて、わかりやすく統一することによって、安全で便利なものにすることです
  出典　https://minsaku.com/articles/post882/

my SQlはミドルウェアだったのか。知らなかった。

# 基本ソフトウェアは３種類のプログラム
基本ソフトウェアは細かく分類できる。
以下の三つだ。

### 制御プログラム
ハードウェアを管理している。
```応用ソフトウェアやミドルウェアを効率よく利用できる```ように働くソフトウェア。
このプログラムのことを```カーネル```。
メモリ管理やプロセス管理などに機能を限定した```マイクロカーネル```。
多くの機能を網羅した```モノリシックカーネル```。
### 言語処理プログラム（言語プロセッサ)
プログラミング言語で書かれたプログラムを、コンピュータが理解できる```機械語に翻訳する```プログラム

### サービスプログラマ
```補助的なプログラム```のことで、ユーティリティとも呼ばれます。
例えばファイル圧縮プログラムです。

### OSの解釈
OS＝基本ソフトウェアになるが、狭い意味になると```制御プログラムこそOS```という扱いになる。

## 気づき
### ユーティリティとはなんだろう？
* ユーティリティソフトとは、コンピュータやOS、アプリケーションソフトなどの機能を補い、```使い勝手や性能などを向上させる``` ```単機能あるいは小規模なソフトウェア```のこと。```それ自体を目的に使用することはほとんどなく```、```コンピュータ利用の補助```のために用いるためのソフトである。単に「ユーティリティ」と略されることも多い。
出典 https://e-words.jp/w/%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3%E3%82%BD%E3%83%95%E3%83%88.html
* 「ユーティリティソフト」ともいわれます。
主にOS（基本ソフト）の```標準機能では補えない部分を補助```するためのアプリケーションといえます。
例えば、```「ファイルを圧縮するソフト」、「アンチウイルスソフト」```、などがそれにあたります。
出典 http://www.iware.ne.jp/pc/entrydata/utility.php

* OSやアプリケーションの```機能や操作性を改善・向上するためのソフトウェアの総称```である。ツールと呼ばれることもある。
```ファイル圧縮やメモリー管理、コンピュータウイルスの駆除、スクリーンセーバーなど```、用途ごとに様々なユーティリティソフトが存在し、その多くはOSの機能の使いづらい部分の改善に用いられる。ユーティリティソフトの機能が取り込まれることで```OSも機能を強化されてゆく```。
出典 https://www.weblio.jp/content/%E3%83%A6%E3%83%BC%E3%83%86%E3%82%A3%E3%83%AA%E3%83%86%E3%82%A3%E3%82%BD%E3%83%95%E3%83%88

### メモリ管理とは？
データを格納するために```必要な「メモリ領域」を割り当てたり```、不要になったデータが```占拠しているメモリ領域を解放```したりすることを指します。
なぜメモリ管理が必要なのでしょうか？
メモリには容量の上限があるので、```効率よく使うためにメモリを管理する必要がある```からです。
出典 https://kino-code.com/what-is-memory-management/

## 代表的なOS
Windows以外にもさまざまな種類がある。

### Windows
Microsoft社製のOS。
マウスなどの```ポインティングデバイスを使って画面を操作```することで、コンピュータに命令を伝える。

### Mac OS
```Apple社製```のOS。
GUIを実装したOSの先駆け。

### MS-DOS
Microsoft社製のOS。
```キーボードを使って文字ベースのコマンドを入力することでコンピュータに命令を伝える。```

### UNIX
```サーバーに使われることの多い```OSです。
大勢のユーザーが同じ利用できるように考えられている。

### Linux
UNIX互換のOSです。
```無償で利用する```ことができます。

## 気づき
いろんなOSがあるな。

# OSによる操作性の向上
コンピュータを使うためにはそのためのインタフェースが必要。
現在広く使われているOS。
GUI（Graphical User Interface)という
```画面にアイコンやボタンを表示して、それを視覚的に操作することで命令を伝える操作方式```
コンピュータを操作するための表面的なインタフェース部分も担当する。

# API
OSとアプリケーションとの接点部分を見てみる。
OSは、自身が管理することによって、ハードウェアの違いや入出力などを全てブラックボックス化します。従って各アプリケーションが直接それらを意識することはありません。
そのためOSは、```ハードウェアの利用も含めて、自身が持つ各種機能をアプリケーションから呼び出せる仕組み```を用意しています。
その設けられたインタフェースを```API(application Program Interface)```と呼びます。

## APIを利用してのメリット
* 開発効率アップ
  APIを呼び出すだけで機能が使える。アプリケーションの作成が楽になる。

* 操作性の統一 
  見た目、基本的な動きが共通化される。

* 互換性の確保
  OSが同じなら無事に動く。

## 気づき
### APIがあまりピンとこない。
アプリケーションがコンピュータの機能を使えることなのかな？
* ```ソフトウェアやプログラム、Webサービスの間```をつなぐインターフェースのことを指します。
.
.
.
APIの利用プロセスは役所や商店の「窓口」と似ています。```APIを通して「何をしてほしいか」を仕様（申込用紙）に沿って記述し、APIの提供元にその要求を送信します。```ルールに則って必要事項が書かれていれば、APIを提供するサービスやソフトウェアが要求を処理し、その結果を返答します。
出典 https://www.sbbit.jp/article/cont1/62752

* Application Programming Interfaceの略。```ソフトウェアからOSの機能を利用するための仕様またはインターフェースの総称```で、アプリケーションの開発を容易にするためのソフトウェア資源のことをいう。
「API」の重要な役割は、```サービス提供者が公式に仕様を定義・管理している操作方法（インターフェース）を提供```することである。
よく使う機能をAPIから呼び出すだけで使えるため、```ゼロからプログラミングする必要がなくなり、ソフトウェアの開発を省力化できる```。
出典 https://mypage.otsuka-shokai.co.jp/contents/business-oyakudachi/words/api.html

なかなかしっくりは来ていないが
APIというインタフェースを設けることによってアプリケーションから基本ソフトウェアに要求ができるのかな。

出典 出典 キタミ式イラストIT塾　基本情報技術者　令和03年