---
# System prepended metadata

title: OS Chapter 2
tags: [Operating System, CSnote]

---

---
title: OS Chapter 2
---

# Chapter 2
## Operating system services 
* OS provide an environment for execution of programs and services to programs and users
* Helpful OS functions: User interface(CLI, GUI, batch), Program execution, I/O operation, File-system manipulation, Communications, Error detection.
* Another set of OS functions exists for ensuring the efficient operation of the system itself via resource sharing: Resource allocation, Accounting(追蹤用戶使用狀況), Protection(控制系統資源存取) and security(用戶授權跟外部惡意存取)
## Command Line Interface(CLI)
* Implemented by kernal or system program 
* Multiple flavor - shells(User interface for access to OS service)
## System calls
* programming interface to the services provided by the OS
* Typically written in a high-level language (C, C++)
* Mostly accessed by programs via a high-level API rather than system call
![](https://i.imgur.com/cOm2ptA.png)
### System class parameter passing
* pass the parameters in registers
* store in memory
* pushed onto stack
## System programs
* System programs provide a convenient environment for program development and execution. They can be divided into:
### File manipulation
* create, delete, copy, rename, print, dump, list and generally manipulate files and directories
### Status information
* Some ask for system info(time and date, amount of available memory, disk space...)
* Other provide detailed performance, logging, and debugging information
* Some systems implement a registry, used to store and retrieve configuration information.
### File modification
* Text editors to create ad modify files
* Special commands to search contents of files or perform transformations of the text.
### Programming language support
* Compiler, assemblers, debuggers and interpreters sometimes provided
### Program loading and execution
* Absolute loaders, relocatable loader, linkage editors and overlay-loaders, debugging systems for higher-level and machine language 
### Communications
* Provide the mechanism for creating virtual connections among processes, user and computer system
* Allow users to send messages to one another's screens, browse web pages, send e-mail, logging remotely, transfer files to another.
### Background services
* Launch at boot time, some for system startup and terminate, and some from system boot to shutdown
* Provide facilities like disk checking, process scheduling, error logging, printing
* Run in user context not kernel context
* Known as services, subsystems, daemons
### Application programs
* Not pertain to system, and not typically considered of OS
* Run by command line, mouse click and finger poke by user
## Ms-DOS vs UNIX
* MS-DOS is written to provide the most functionality in the least space, thus its levels of functionality aren't well separated
* UNIX is limited by hardware functionality, it consists of two separable part:
* System programs and The Kernel(包含各種在CLI底下的各種東西，如圖)
#### OSs
* MS-DOS(Simple)

![](https://i.imgur.com/Giwbz4z.png)
* UNIX(beyond simple not fully layered)

![](https://i.imgur.com/FZLYbxm.png)
* Solaris(modular)

![](https://i.imgur.com/rDgcExs.png)
## Microkernel System structure
* Move as much from the kernel into user space(剩下行程間通訊、記憶體管理跟執行緒管理在kernel，剩下的在user space跑)
* Mac OS X kernel (Darwin) partly based on Mach
* Communication takes place between user modules using message passing
* Benefits: Easier to extend a micro-kernel, port the OS to new architectures, More reliable(less code is running) and secure.
* Detriment: Performance overhead of user space to kernel space communication.
## Module
* Most modern OS implement loadable kernel modules
* Uses object-oriented approach
* Each core component is separate
* Each talks to the others over known interfaces
* Each is loadable as needed within their kernel
## Hybrid(=Mixed) system
* hybrid combines multiple approaches to address performance, security, usability needs.
#### MAC OS X
* COCOA Is the programming environment

![](https://i.imgur.com/RxjfTBx.png)
#### Android
* Based on Linux

![](https://i.imgur.com/AnSu0eN.png)
#### Dtrace
* Probes fire when code is executed within a provider. capturing state data and sending it to consumers of probes


## System Boot
* When power is initialized on system, the **bootstrap loader** is loaded from ROM. The bootstrap loader loads the kernel.
# Review Question 
* 1.  What is “shell” in Unix? Describe its usage. -[CLI](#Command-Line-InterfaceCLI)
* 2.  What is system call? -[System Call](#System-calls)
* 3.  What is API? -[API](#System-calls)
* 4.  What are differences between system call and API? -[API](#System-calls)
* 5.  How does user program pass a block of data by a system call? -[Parameter passing](#System-class-parameter-passing)
* 6.  What is system program? -[System Program](#System-programs)
* 7.  What is the structure of MS-DOS, UNIX, and Solaris?[OS](#OSs)
* 8.  How does Cocoa work? [MAC OS](#MAC-OS-X)
* 9.  How does Android work?[Android](#Android)
* 10. How does DTrace work?[DTrace](#Dtrace)
* 11. What is bootstrap program? How does it work? -[System boot](#System-Boot)
# END

###### tags: `Operating System` `CSnote`