windows, linux, and unix processesweb.cs.wpi.edu/~cs3013/c12/.../week1_unixprocesses.pdf ·...

27
Processes in Unix, Linux, and Windows CS-3013 Operating Systems Hugh C. Lauer (Slides include materials from Slides include materials from Modern Operating Systems, 3 rd ed., by Andrew Tanenbaum and from Operating System Concepts, 7 th ed., by Silbershatz, Galvin, & Gagne) CS-3013, C-Term 2012 Windows, Linux, and Unix Processes 1

Upload: others

Post on 14-Aug-2020

12 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes in Unix, Linux, and Windows

CS-3013 Operating Systems Hugh C. Lauer

(Slides include materials from Slides include materials from Modern Operating Systems, 3rd ed., by Andrew Tanenbaum

and from Operating System Concepts, 7th ed., by Silbershatz, Galvin, & Gagne)

CS-3013, C-Term 2012 Windows, Linux, and Unix Processes 1

Page 2: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes in Unix, Linux, and Windows

• In previous topic, we used “process” in a generic way to represent the abstraction of concurrency

• Unix pre-empted generic term “process” to mean something very specific

• Linux, Windows, and other OSes adopted Unix definition

Windows, Linux, and Unix Processes 2 CS-3013, C-Term 2012

Page 3: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Process in Unix-Linux-Windows comprises

• an address space – usually protected and virtual – mapped into memory

• the code for the running program • the data for the running program • an execution stack and stack pointer (SP); also heap • the program counter (PC) • a set of processor registers – general purpose and status • a set of system resources

– files, network connections, pipes, … – privileges, (human) user association, …

• … Windows, Linux, and Unix Processes 3 CS-3013, C-Term 2012

Page 4: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Reading Assignment

• Tanenbaum, §2.1 – Also §10.3.1, 10.3.2

Windows, Linux, and Unix Processes 4 CS-3013, C-Term 2012

Page 5: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Process Address Space (traditional Unix)

Windows, Linux, and Unix Processes 5 CS-3013, C-Term 2012

0x00000000

0xFFFFFFFF

(Virtual) address space

Program code (text)

Global and static data

Heap (dynamically allocated)

Stack (dynamically allocated)

PC

SP

Page 6: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes in the OS – Representation

• To users (and other processes) a process is identified by its Process ID (PID)

• In the OS, processes are represented by entries in a Process Table (PT) – PID is index to (or pointer to) a PT entry – PT entry = Process Control Block (PCB)

• PCB is a large data structure that contains or points to all info about the process – Linux – defined in task_struct (over 70 fields)

• see include/linux/sched.h

– Windows XP – defined in EPROCESS – about 60 fields

Windows, Linux, and Unix Processes 6 CS-3013, C-Term 2012

Page 7: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes in the OS – PCB

• Typical PCB contains: – execution state – PC, SP & processor registers – stored when

process is not in running state – memory management info – privileges and owner info – scheduling priority – resource info – accounting info

Windows, Linux, and Unix Processes 7 CS-3013, C-Term 2012

Page 8: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Process – starting and ending • Processes are created …

– When the system boots – By the actions of another process (more later)

– By the actions of a user – By the actions of a batch manager

• Processes terminate … – Normally – exit – Voluntarily on an error – Involuntarily on an error – Terminated (killed) by action of

• a user or • another process

Windows, Linux, and Unix Processes 8 CS-3013, C-Term 2012

Page 9: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes – States • Process has an execution state

– ready: waiting to be assigned to CPU – running: executing on the CPU – waiting: waiting for an event, e.g. I/O

Windows, Linux, and Unix Processes 9 CS-3013, C-Term 2012

Page 10: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes – State Queues

• The OS maintains a collection of process state queues – typically one queue for each state – e.g., ready,

waiting, … – each PCB is put onto a queue according to its current

state – as a process changes state, its PCB is unlinked from

one queue, and linked to another

• Process state and the queues change in response to events – interrupts, traps

Windows, Linux, and Unix Processes 10 CS-3013, C-Term 2012

Page 11: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes – Privileges

• Users are given privileges by the system administrator

• Privileges determine what rights a user has for an object. – Unix/Linux – Read|Write|eXecute by user,

group and “other” (i.e., “world”)

– Windows NT/XP/7 – Access Control List • Processes “inherit” privileges from user

– or from creating process

Windows, Linux, and Unix Processes 11 CS-3013, C-Term 2012

Page 12: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Process Creation – Unix & Linux

• Create a new (child) process – fork(); – Allocates new PCB – Clones the calling process (almost exactly)

• Copy of parent process address space • Copies resources in kernel (e.g. files)

– Places new PCB on Ready queue – Return from fork() call

• 0 for child • child PID for parent

Windows, Linux, and Unix Processes 12 CS-3013, C-Term 2012

Page 13: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Example of fork( ) int main(int argc, char **argv) { char *name = argv[0]; int child_pid = fork(); if (child_pid == 0) { printf("Child of %s sees PID of %d\n", name, child_pid); return 0;

} else { printf("I am the parent %s. My child is %d\n", name, child_pid); return 0; } } _______________________________ % ./forktest Child of forktest sees PID of 0 I am the parent forktest. My child is 486

Windows, Linux, and Unix Processes 13 CS-3013, C-Term 2012

Page 14: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Result – Two identical processes int main(int argc, char **argv) { char *name = argv[0]; int child_pid = fork(); if (child_pid == 0) { printf("Child of %s sees PID" " %d\n", name, child_pid); return 0;

} else { printf("I am the parent %s. " "My child is %d\n", name, child_pid); return 0; } }

int main(int argc, char **argv) { char *name = argv[0]; int child_pid = fork(); if (child_pid == 0) { printf("Child of %s sees PID" " %d\n", name, child_pid); return 0;

} else { printf("I am the parent %s. " "My child is %d\n", name, child_pid); return 0; } }

Windows, Linux, and Unix Processes 14 CS-3013, C-Term 2012

True False

One Difference

Page 15: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Starting New Programs

• Unix & Linux:– – int exec (char *prog, char **argv)

– Check privileges and file type – Loads program at path prog into address space

• Replacing previous contents! • Execution starts as function call to main()

– Initializes context – e.g. passes arguments • *argv

– Place PCB on ready queue – Preserves, pipes, open files, privileges, etc.

Windows, Linux, and Unix Processes 15 CS-3013, C-Term 2012

Page 16: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Executing a New Program (Linux-Unix)

• fork() followed by exec()

• Creates a new process as clone of previous one

• I.e., same program, but different execution of it

• First thing that clone does is to replace itself with new program

Windows, Linux, and Unix Processes 16 CS-3013, C-Term 2012

Page 17: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Fork + Exec – shell-like int main(int argc, char **argv) { char *argvNew[5]; int pid; if ((pid = fork()) < 0) { printf( "Fork error\n“); exit(1); } else if (pid == 0) { /* child process */ argvNew[0] = "/bin/ls"; /* i.e., the new program */ argvNew[1] = "-l"; argvNew[2] = NULL; if (execvp(argvNew[0], argvNew) < 0) { printf( "Execvp error\n“); exit(1); /* program should not reach this point */ } } else { /* parent */ wait(pid); /* wait for the child to finish */ }

}

Windows, Linux, and Unix Processes 17 CS-3013, C-Term 2012

Page 18: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Waiting for a Process

• Multiple variations of wait function • Including non-blocking wait functions

• Waits until child process terminates • Acquires termination code from child • Child process is destroyed by kernel

• Zombie:– a process that had never been waited for • Hence, cannot go away!

• See Love, Linux Kernel Development, pp 37-38 • See Tanenbaum, §10.3.2

Windows, Linux, and Unix Processes 18 CS-3013, C-Term 2012

Page 19: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes – Windows

• Windows NT/XP – combines fork & exec – CreateProcess(10 arguments) – No parent child relationship – Note – privileges are required to create a

new process

– See Tanenbaum, §11.4 – (More in this section than we have discussed so far)

Windows, Linux, and Unix Processes 19 CS-3013, C-Term 2012

Page 20: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Traditional Unix

• Processes are in separate address spaces • By default, no shared memory

• Processes are unit of scheduling • A process is ready, waiting, or running

• Processes are unit of resource allocation • Files, I/O, memory, privileges, …

• Processes are used for (almost) everything!

Windows, Linux, and Unix Processes 20 CS-3013, C-Term 2012

Page 21: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Windows and Linux

• Threads (next topic) are units of scheduling

• Threads are used for everything

Windows, Linux, and Unix Processes 21 CS-3013, C-Term 2012

Page 22: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Non-Traditional Unix E.g., iPhone, Android, etc.

• Processes are in separate address spaces • By default, no shared memory

• Processes are unit of scheduling • A process is ready, waiting, or running

• Processes are unit of resource allocation • Files, I/O, memory, privileges, …

• Processes are used for (almost) everything!

Windows, Linux, and Unix Processes 22 CS-3013, C-Term 2012

Page 23: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

A Note on Implementation

• Many OS implementations include (parts of) kernel in every address space

• Protected • Easy to access • Allows kernel to see into client processes

– Transferring data – Examining state – …

Windows, Linux, and Unix Processes 23 CS-3013, C-Term 2012

Page 24: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Processes – Address Space

Windows, Linux, and Unix Processes 24 CS-3013, C-Term 2012

0x00000000

0xFFFFFFFF

Virtual

address space

code (text)

static data

heap (dynamically allocated)

Kernel Code and Data

PC

SP

User Space

stack (dynamically allocated)

Kernel Space

32-bit Linux & Win XP – 3G/1G user space/kernel space

Page 25: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Linux Kernel Implementation

• Kernel may execute in either Process context vs. Interrupt context

• In Process context, kernel has access to • Virtual memory, files, other process resources • May sleep, take page faults, etc., on behalf of

process

• In Interrupt context, no assumption about what process was executing (if any)

• No access to virtual memory, files, resources • May not sleep, take page faults, etc.

Windows, Linux, and Unix Processes 25 CS-3013, C-Term 2012

Page 26: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Reading Assignment

• Tanenbaum, §2.1 & §10.3.1–10.3.2

Windows, Linux, and Unix Processes 27 CS-3013, C-Term 2012

Page 27: Windows, Linux, and Unix Processesweb.cs.wpi.edu/~cs3013/c12/.../Week1_UnixProcesses.pdf · Processes in Unix, Linux, and Windows • In previous topic, we used “ process ” in

Questions?

CS-3013, C-Term 2012 Windows, Linux, and Unix Processes 28