Advanced Operating Systems Implementing System Calls 40 System
- Slides: 13
Advanced Operating Systems Implementing System Calls 40
System Call Implementation • Under Linux system calls have 2 separate function calls – The do_xxx call which does the work – The sys_xxx macro which deals with arguments a call numbers 41
System Call Implementation System calls involve switching from user to supervisor mode through an interrrupt (0 x 80 on PCs) • _syscall macro generates the actual system call number (unistd. h) • Interrupt routine handles the call (arch/kernel/entry. s) • If legitimate, the routine looked up in sys_call_table[] 42
System Call Implementation • Some call may be traced - ie debugged calls – using the syscall_trace function • On return from system call a number of administrative tasks must be done – Send parent signals – Any pending interrupt service routines called – Signals handled 43
Implementing fork() & clone() • Under Linux fork() and clone() are essentially the same call with some (important) differences – Fork() create a completely new process – Clone() creates a new thread within a process 44
Linux fork() versus traditional fork() • UNIX fork() creates – New process environment – Copies data – Copies text* – Copies files, locks and signals – Creates new PID * Text may be shared • Linux fork() creates – New process environment – Makes data write protected (copies on write) – Copies files, locks and signals – Creates new PID 45
Implementing fork() & clone() • They both call do_fork() however clone() sets up some extra parameters beforehand – Set up a new set of register and stack pointers • do_fork() is called as follows – do_fork(SIGCHILD, regs, esp, ®s); • Or – do_fork(clone_flags, newsp, ®s); 46
Implementing fork() & clone() • do_fork() – Creates a new stack –using kmalloc() – Gets a new process table entry • The child or thread inherits all of the parents task structure but changes some entries – Exec flag, time, signal flags 47
Implementing fork() & clone() • The difference between fork and clone is found at the final section of the call – when the task substructures are copied (or not!) – This copies files, file systems, signal handlers, memory management – The parent gets the child or thread pid 48
Fork and Clone Process 1 User Space Thread Kernel Space 49
Executable formats • Before looking at exec a word on file formats – there a number of different formats – a. out – the original UNIX format – COFF – Common Object File Format – ELF – Executable and Linkable Format • There are others – lots of them! 50
Linux and file formats • Linux supports a large number of file formats – each ones is tried until one works – Done by do_exec – Use linux_binfmt • Loads binary • Loads libs • Deals with the core file • They can be load as modules 51
e_indent e_entry e_phoff e_phentsize e_phnum Physical Header p_type p_offset p_vaddr p_filesz p_memsz p_flags ‘E’ ‘L’ ‘F’ 0 x 8048090 52 52 2 ELF PT_LOAD 0 0 x 804800 68532 PF_R, PF_X PT_LOAD 68536 0 x 8059 BB 8 2200 4248 PF_R, PF_W CODE DATA 52
- Operating system lecture notes
- Ricart agrawala algorithm code in java
- Advanced operating system
- Multiprocessor scheduling in operating system
- Operating system architecture in distributed systems
- Advanced fusion systems llc
- Advanced fueling systems
- Cs598
- Advanced fluid systems inc
- Tom kilcer advanced ag systems
- Ist 421
- Advanced embedded systems
- Enotes fst
- Advanced cooling systems inc