# ➢ Modern Operating Systems 笔记 - File System

## Files

File structures

Byte sequence , Record sequence , Tree

File Types

Regular files , Directories , Character special files , Block special files

File operations

Create , Delete , Open , Close , Read , Write , Append , Seek , Get attributes , Set attributes , Rename.

# ➢ Makefile 入门

make是软件开发中常用的工具程序（Utility software），常被用来构建C程序。make通过读取叫做“makefile”的文件，来自动化建构软件。

# ➢ Modern Operating Systems 笔记 - Input/Output

## Principles of I/O Hardware

### Devices & Controllers

• block devices stores information in fixed-size blocks, each one with its own address.
• character devices delivers or accepts a stream of characters, without regard to any block structure.
• device controller/adapter takes the form of a chip on the parentboard or a printed circuit card that can be inserted into a (PCI) expansion slot.

### Memory-Mapped I/O

Each control register is assigned a unique memory address to which no memory is assigned.

Pros:

• if special I/O instructions are needed to read/write the device control registers, access to them requires nothing more than standard C code, otherwise needs the use of addembly code.
• with memory-mapped I/O, no special protection mechanism is needed to keep user processes from performing I/O.
• With memory-mapped I/O, every instruction that can reference memory can also reference control registers.

Cons:

• most computers nowadays have some form of caching of memory words. Caching a device control register would be disastrous.
• If there is only one address space, then all memory modules and all I/O devices must examine all memory references to see which ones to respond to.

# ➢ Modern Operating Systems 笔记 - Memory Management

## No Memory Abstraction

Running multiple programs by static relocation: Modify the second program on the fly as it loaded it into memory.

The lack of memory abstraction is still common in embedded and smart card systems.

## A Memory Abstraction: Address Spaces

Dynamic relocation uses base and limit registers to map each process’ address space onto a different part of physical memory in a simple way.

The disadvantage of relocation using base and limit registers is the need to perform an addition and comparison on every memory reference.

Swapping is used to deal with memory overload, bringing in each process in its entirety, running for a while, then putting it back on the disk.

When swapping creates multiple holes in memory, it’s possible to combine them all into one big one, which is called memory compaction. Free memory can be recorded as bitmaps or linked lists.

# ➢ Modern Operating Systems 笔记 - Deadlocks

## Resources

A preemptable resource is one that can be taken away from the process owning it with no ill effects.

A nonpreemptable resource is one that cannot be taken away from its current owner without causing the computation to fail.

Resource Acquisition

1. Request the resource.
2. Use the resource.
3. Release the resource.

A possible implementation:

1. down on the semaphore to aquire the resource.
2. using the resource.
3. up on the semaphore to release the resource.

# ➢ Modern Operating Systems 笔记 - Scheduling

## Introduction to Scheduling

### Personal Computer

Scheduling is simpler in personal computers because (1) there is only one active process, (2) CPU is more faster than I/O.

### Process Behavior

Compute-bound: long CPU bursts and thus infrequent I/O waits. I/O-bound: short CPU bursts and thus frequent I/O waits.

# ➢ Modern Operating Systems 笔记 - Interprocess Communication

race conditions

Two or more processes are reading or writing some shared data and the final result depends on who runs precisely when.

## Critical Regions

mutual exclusion

Prohibit more than one process from reading and writing the shared data at the same time.

critical region

Also called critical section , the part of the program where the shared memory is accessed.

Conditions to a good solution

1. No two processes may be simultaneously inside their critical regions
2. No assumptions may be made about speeds or the number of CPUs
3. No process running outside its critical region may block other processes
4. No process should have to wait forever to enter its critical region