15
Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Embed Size (px)

Citation preview

Page 1: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Minix

Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Page 2: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Minix History and Purpose

• In 1975 the source for UNIX version 6 was available from AT&T– Universities took advantage of this and used the

source in courses on OS design and implementation.

• With the release of UNIX version 7, AT&T decided to restrict the use of the source.

Page 3: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Minix History and Purpose

• Dr. Tanenbaum wrote MINIX (from scratch) as a replacement for AT&T UNIX in OS design and implementation courses.– Originally, MINIX was written to be

compatible with UNIX V7.– Since, it has become increasingly POSIX

compliant.

Page 4: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Minix and Linux

• Independent users of Minix were unsatisfied with its limited capabilities.– Linus Torvalds decided to write his own OS

based on Minix.

Page 5: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

The Boot Process

• The boot sector contains the hard-coded location of a boot program – The program is stored in the 1st Kilobyte block

of the MINIX partition.– This is known as the bootblock and is a

standard feature in UNIX.

Page 6: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

The Boot Process

• The boot program provides two main services.– Boot MINIX or any other OS on the disk.– Configure boot parameters for MINIX.

Page 7: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Processes: Process Scheduling

• There are three levels of processes in MINIX:– User Processes– Server Processes– I/O Tasks

• I/O Tasks are run first, then Server Processes and finally User Processes.

Page 8: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Processes: Process Scheduling

• Tasks within each level are handled differently:– User Processes:

• Scheduled using a round robin algorithm

• Interrupts are used to indicate when a process has to give up the CPU.

– Server Processes and I/O Tasks• Run until blocked (FIFO)

Page 9: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Deadlock

• “True to its heritage, MINIX follows the same path as UNIX with respect to deadlocks: it just ignores the problem altogether.”

-- Tanenbaum and Woodhull

Page 10: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

I/O

• There are no dedicated I/O devices (this is the reason for no deadlock avoidance).

• Hardware– This is where all the physical devices are.

Communication is achieved through interrupts.

Page 11: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

I/O

• Interrupt Handlers– Serves as a communication layer between Driver and

Hardware.

– Buffers information in some cases (like clock events) to percent the system from being flooded by messages.

• Device Drivers– Handles interpretation of information coming from the

Interrupt Handler

– Full, separate process that run in the task layer.

Page 12: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

I/O

• Device-independent Software– The layer that provides a standard interface for

user level programs.– Functions like fprintf and fscanf reside in this

layer.

• User Processes– User programs that make calls to the Device-

independent Software layer reside here.

Page 13: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Memory Management

• A list of holes (unused sections of memory) is maintained in memory address order.

• When a request for memory is made the first hole that can accommodate the request is used.

Page 14: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Memory Management

• Once a process is in memory there is no moving or resizing of the partition.– Two reasons for this simplistic memory

management system:• Since MINIX was designed as a learning tool Dr.

Tanenbaum felt that a more complex memory management system was not needed.

• MINIX is designed to run on all x86 processors including the 8088 which can’t handle segmented memory.

Page 15: Minix Jeff Ward, Robert Burghart, Jeb Collins, Joe Creech

Threads (?)

• MINIX doesn’t support threading in the kernel. – Since it is a partially compliant POSIX system,

one could use a thread library.