!"#$%&'())*'"+,&-,.-!! 1

Size: px
Start display at page:

Download "!"#$%&'())*'"+,&-,.-!! 1"

Transcription

1 !"#$%&'())*'"+,&-,.-!! 1

2 Thinking about thinking in code George V. Neville-Neil Ottawa, Canada

3 What is this about? 3

4 What is this about? This is not about any particular BSD 3

5 What is this about? This is not about any particular BSD This presentation is about how we think about coding 3

6 What is this about? This is not about any particular BSD This presentation is about how we think about coding The opinions expressed are those of the author and do not reflect the opinions of any BSD project... 3

7 What is this about? This is not about any particular BSD This presentation is about how we think about coding The opinions expressed are those of the author and do not reflect the opinions of any BSD project... - Yes, this is a bit of a rant 3

8 A Challenge 4

9 A Challenge If GM had kept up with technology like the computer industry has, we would all be driving $25 cars that got 1000 MPG. 4

10 A Challenge If GM had kept up with technology like the computer industry has, we would all be driving $25 cars that got 1000 MPG. 4

11 A Challenge If GM had kept up with technology like the computer industry has, we would all be driving $25 cars that got 1000 MPG. Bill Gates 4

12 A Challenge If GM had kept up with technology like the computer industry has, we would all be driving $25 cars that got 1000 MPG. Bill Gates 4

13 A Challenge If GM had kept up with technology like the computer industry has, we would all be driving $25 cars that got 1000 MPG. Bill Gates People who build software are soooo much more innovative than people who build cars. 4

14 A Challenge If GM had kept up with technology like the computer industry has, we would all be driving $25 cars that got 1000 MPG. Bill Gates People who build software are soooo much more innovative than people who build cars. 4

15 A Challenge If GM had kept up with technology like the computer industry has, we would all be driving $25 cars that got 1000 MPG. Bill Gates People who build software are soooo much more innovative than people who build cars. Or are we? 4

16 Just how is GM doing? 5

17 How about Microsoft? 6

18 MSFT vs. GM Who s Better? 7

19 GM s Original Product 8

20 GM s Latest Product 9

21 Sometimes you take a wrong turn 10

22 and you never recover... 11

23 Changing Internals of Autos 12

24 Are we assembly line programmers? Automobiles Assembly Line Modular Design Unified UI Just In Time Delivery Software Waterfall Model Modules Objects Components Re-use Design Patterns 13

25 Parts Used in Construction Automobile Engine Brakes Drive Train Wheels Transmission Door Locks Exhaust System Operating System Kernel Scheduler Memory VM I/O Filesystem Sockets 14

26 MSFT s Early Product 15

27 MSFT s Latest Product 16

28 Early Innovation? 17

29 Still thinking differently? 18

30 One of our early products 19

31 One of our recent products 20

32 Never forget your history! 21

33 Well, perhaps that s just UIs 22

34 Well, perhaps that s just UIs Users force us to provide these types of systems. 22

35 Well, perhaps that s just UIs Users force us to provide these types of systems. Paradigm shift is hard. 22

36 Well, perhaps that s just UIs Users force us to provide these types of systems. Paradigm shift is hard. If we make it too different it won t sell. 22

37 Well, perhaps that s just UIs Users force us to provide these types of systems. Paradigm shift is hard. If we make it too different it won t sell. We re just implementing the marketing spec! 22

38 Well, perhaps that s just UIs Users force us to provide these types of systems. Paradigm shift is hard. If we make it too different it won t sell. We re just implementing the marketing spec! What s under the hood is totally different! 22

39 Changing Internals of OSs 23

40 How Different Are We? BSD Linux Windows Mac OS C C C C/C++ Kernel Kernel Kernel ukernel? VM VM VM VM Processes Processes Processes Processes Threads Threads Threads Threads Events UI Events UI Events UI Events UI 24

41 Why do we fail to provide new models? 25

42 Why do we fail to provide new models? What we were taught? 25

43 Why do we fail to provide new models? What we were taught? What the people want? 25

44 Why do we fail to provide new models? What we were taught? What the people want? What we want? 25

45 Why do we fail to provide new models? What we were taught? What the people want? What we want? These are the best models? 25

46 Why do we fail to provide new models? What we were taught? What the people want? What we want? These are the best models? Our languages and environment dictate our models? 25

47 How do most programmers program? 26

48 How do most programmers program? Text structured in various (non)sensical ways 26

49 How do most programmers program? Text structured in various (non)sensical ways Edit, Compile, Link, Run, Debug cycle 26

50 How do most programmers program? Text structured in various (non)sensical ways Edit, Compile, Link, Run, Debug cycle Edit, run, edit, run, edit, run 26

51 How do most programmers program? Text structured in various (non)sensical ways Edit, Compile, Link, Run, Debug cycle Edit, run, edit, run, edit, run Three basic types of languages 26

52 But what are your options? 27

53 But what are your options? Algol 27

54 But what are your options? Algol - Procedural 27

55 But what are your options? Algol - Procedural Lisp 27

56 But what are your options? Algol - Procedural Lisp - Functional 27

57 But what are your options? Algol - Procedural Lisp - Functional Prolog 27

58 But what are your options? Algol - Procedural Lisp - Functional Prolog - Insanity 27

59 How we think in code matters! 28

60 How we think in code matters! Sloppy languages lead to sloppy code 28

61 How we think in code matters! Sloppy languages lead to sloppy code - Almost always 28

62 How we think in code matters! Sloppy languages lead to sloppy code - Almost always Unsafe languages lead to unsafe code 28

63 How we think in code matters! Sloppy languages lead to sloppy code - Almost always Unsafe languages lead to unsafe code - Almost always 28

64 How we think in code matters! Sloppy languages lead to sloppy code - Almost always Unsafe languages lead to unsafe code - Almost always Confusing languages lead to confusing code 28

65 How we think in code matters! Sloppy languages lead to sloppy code - Almost always Unsafe languages lead to unsafe code - Almost always Confusing languages lead to confusing code - Almost always 28

66 How we think in code matters! Sloppy languages lead to sloppy code - Almost always Unsafe languages lead to unsafe code - Almost always Confusing languages lead to confusing code - Almost always Lowering the barrier to entry has lowered the quality of code 28

67 How many words is a comic worth? 29

68 Programmers learn what they live 30

69 Programmers learn what they live If a programmer reads good code she will write good code 30

70 Programmers learn what they live If a programmer reads good code she will write good code If a programmer sees good abstractions he will write good abstractions 30

71 Programmers learn what they live If a programmer reads good code she will write good code If a programmer sees good abstractions he will write good abstractions If a programmer works with good programmers her code will improve 30

72 Programmers learn what they live If a programmer reads good code she will write good code If a programmer sees good abstractions he will write good abstractions If a programmer works with good programmers her code will improve If a programmer works with poor programmers his code will suffer 30

73 Programmers learn what they live If a programmer reads good code she will write good code If a programmer sees good abstractions he will write good abstractions If a programmer works with good programmers her code will improve If a programmer works with poor programmers his code will suffer Don t read crap code! 30

74 Programmers learn what they live If a programmer reads good code she will write good code If a programmer sees good abstractions he will write good abstractions If a programmer works with good programmers her code will improve If a programmer works with poor programmers his code will suffer Don t read crap code! Don t hang out with crap programmers! 30

75 Everything has been discovered! 31

76 Everything has been discovered! Everything that can be invented has been invented. Charles Duell (?) 31

77 Everything has been discovered! Everything that can be invented has been invented. Charles Duell (?) Turns out not to be true 31

78 Will the real Charles Duell... 32

79 Will the real Charles Duell... "Our future progress and prosperity depend upon our ability to equal, if not surpass, other nations in the enlargement and advance of science, industry and commerce. To invention we must turn as one of the most powerful aids to the accomplishment of such a result." Charles Duell 32

80 Stop Re-inventing the Wheel 33

81 Stop Re-inventing the Wheel There does not need to be another list implementation 33

82 Stop Re-inventing the Wheel There does not need to be another list implementation No one needs another hash table 33

83 Stop Re-inventing the Wheel There does not need to be another list implementation No one needs another hash table Tree 33

84 Stop Re-inventing the Wheel There does not need to be another list implementation No one needs another hash table Tree - Dictionary 33

85 Stop Re-inventing the Wheel There does not need to be another list implementation No one needs another hash table Tree - Dictionary Locking API 33

86 Stop Re-inventing the Wheel There does not need to be another list implementation No one needs another hash table Tree - Dictionary Locking API > Spin Lock 33

87 Stop Re-inventing the Wheel There does not need to be another list implementation No one needs another hash table Tree - Dictionary Locking API > Spin Lock Stop fighting over the scraps 33

88 Stop Re-inventing the Wheel There does not need to be another list implementation No one needs another hash table Tree - Dictionary Locking API > Spin Lock Stop fighting over the scraps Stop re-implementing your school projects 33

89 Invent Some New Wheels 34

90 Invent Some New Wheels UNIX should not be the end of the family tree 34

91 Invent Some New Wheels UNIX should not be the end of the family tree - No matter how much we love BSD 34

92 Invent Some New Wheels UNIX should not be the end of the family tree - No matter how much we love BSD Can you imagine if Vista is what our grandchildren will use? 34

93 Invent Some New Wheels UNIX should not be the end of the family tree - No matter how much we love BSD Can you imagine if Vista is what our grandchildren will use? MacOS X? (XI?) 34

94 Invent Some New Wheels UNIX should not be the end of the family tree - No matter how much we love BSD Can you imagine if Vista is what our grandchildren will use? MacOS X? (XI?) Linux? 34

95 How to Find New Wheels 35

96 How to Find New Wheels Read some papers 35

97 How to Find New Wheels Read some papers - Read the abstracts first 35

98 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless 35

99 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch 35

100 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like 35

101 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme 35

102 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme - Perl 35

103 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme - Perl - Python 35

104 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme - Perl - Python - Haskell 35

105 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme - Perl - Python - Haskell - C++ 35

106 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme - Perl - Python - Haskell - C

107 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme - Perl - Python - Haskell - C Don t specialize too much 35

108 How to Find New Wheels Read some papers - Read the abstracts first - Ignore most of them, most are pointless Look at code you wouldn t normally touch Learn a computer language you don t like - Scheme - Perl - Python - Haskell - C Don t specialize too much Lose your religion! 35

109 You must be willing to 36

110 You must be willing to break things 36

111 You must be willing to break things look stupid 36

112 You must be willing to break things look stupid be wrong 36

113 You must be willing to break things look stupid be wrong learn from others 36

114 All Programmers Have 2 Enemies 37

115 All Programmers Have 2 Enemies Hubris 37

116 All Programmers Have 2 Enemies Hubris Not starting projects 37

117 All Programmers Have 2 Enemies Hubris Not starting projects Never finishing a project 37

118 All Programmers Have 2 Enemies Hubris Not starting projects Never finishing a project - OK, all programmers have 3 enemies 37

119 All Programmers Have 2 Enemies Hubris Not starting projects Never finishing a project - OK, all programmers have 3 enemies Off by one errors are a programmer s 3rd enemy 37

120 All Programmers Have 2 Enemies Hubris Not starting projects Never finishing a project - OK, all programmers have 3 enemies Off by one errors are a programmer s 3rd enemy > Counting from 0 37

121 Your time is limited 38

122 Your time is limited You are only going to live to 72 38

123 Your time is limited You are only going to live to 72 - On average 38

124 Your time is limited You are only going to live to 72 - On average You have to work to eat 38

125 Your time is limited You are only going to live to 72 - On average You have to work to eat Most people only ever have 3 original ideas in their life 38

126 Your time is limited You are only going to live to 72 - On average You have to work to eat Most people only ever have 3 original ideas in their life - Not 3 good ideas, just 3 original ideas 38

127 Your time is limited You are only going to live to 72 - On average You have to work to eat Most people only ever have 3 original ideas in their life - Not 3 good ideas, just 3 original ideas You can easily waste your time on the wrong ideas 38

128 Your time is limited You are only going to live to 72 - On average You have to work to eat Most people only ever have 3 original ideas in their life - Not 3 good ideas, just 3 original ideas You can easily waste your time on the wrong ideas Find people who will honestly tell you if your ideas are crap 38

129 Places to start 39

130 Places to start Safe and powerful programming languages 39

131 Places to start Safe and powerful programming languages Anything that measurably reduces complexity 39

132 Places to start Safe and powerful programming languages Anything that measurably reduces complexity Visualization Tools 39

133 Places to start Safe and powerful programming languages Anything that measurably reduces complexity Visualization Tools Real Software Re-use 39

134 Places to start Safe and powerful programming languages Anything that measurably reduces complexity Visualization Tools Real Software Re-use Novel ways of organizing data 39

135 Places to start Safe and powerful programming languages Anything that measurably reduces complexity Visualization Tools Real Software Re-use Novel ways of organizing data Solve the dependency problem 39

136 Thank you for your time 40

137 Get back to work! 41

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on Chapter 2: Operating-System Structures Operating System Concepts 9 th Edit9on Silberschatz, Galvin and Gagne 2013 Chapter 2: Operating-System Structures 1. Operating System Services 2. User Operating System

More information

Chapter 2. Operating-System Structures

Chapter 2. Operating-System Structures Chapter 2 Operating-System Structures 2.1 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

CS 390 Chapter 2 Homework Solutions

CS 390 Chapter 2 Homework Solutions CS 390 Chapter 2 Homework Solutions 2.1 What is the purpose of... System calls are used by user-level programs to request a service from the operating system. 2.5 What is the purpose of... The purpose

More information

CS101 Introduction to Programming Languages and Compilers

CS101 Introduction to Programming Languages and Compilers CS101 Introduction to Programming Languages and Compilers In this handout we ll examine different types of programming languages and take a brief look at compilers. We ll only hit the major highlights

More information

If your Mac keeps asking for the login keychain password

If your Mac keeps asking for the login keychain password If your Mac keeps asking for the login keychain password The password of your macos user account might not match the password of your login keychain. Either create a new login keychain or update it with

More information

Week - 01 Lecture - 03 Euclid's Algorithm for gcd. Let us continue with our running example of gcd to explore more issues involved with program.

Week - 01 Lecture - 03 Euclid's Algorithm for gcd. Let us continue with our running example of gcd to explore more issues involved with program. Programming, Data Structures and Algorithms in Python Prof. Madhavan Mukund Department of Computer Science and Engineering Indian Institute of Technology, Madras Week - 01 Lecture - 03 Euclid's Algorithm

More information

INTRODUCTION. 2

INTRODUCTION. 2 1 INTRODUCTION It is of no secret that Android is loved by millions of people around the world. Created and developed by Google, it would be most developers dream job. That being said, there are a lot

More information

OpenACC Course. Office Hour #2 Q&A

OpenACC Course. Office Hour #2 Q&A OpenACC Course Office Hour #2 Q&A Q1: How many threads does each GPU core have? A: GPU cores execute arithmetic instructions. Each core can execute one single precision floating point instruction per cycle

More information

Introduction to Programming Style

Introduction to Programming Style Introduction to Programming Style Thaddeus Aid The IT Learning Programme The University of Oxford, UK 30 July, 2013 Abstract Programming style is the part of the program that the human reads and the compiler

More information

Memory Consistency Models

Memory Consistency Models Memory Consistency Models Contents of Lecture 3 The need for memory consistency models The uniprocessor model Sequential consistency Relaxed memory models Weak ordering Release consistency Jonas Skeppstedt

More information

Unit 9 Tech savvy? Tech support. 1 I have no idea why... Lesson A. A Unscramble the questions. Do you know which battery I should buy?

Unit 9 Tech savvy? Tech support. 1 I have no idea why... Lesson A. A Unscramble the questions. Do you know which battery I should buy? Unit 9 Tech savvy? Lesson A Tech support 1 I have no idea why... A Unscramble the questions. 1. which battery / Do you know / should / buy / I? Do you know which battery I should buy? 2. they / where /

More information

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017 ECE 550D Fundamentals of Computer Systems and Engineering Fall 2017 The Operating System (OS) Prof. John Board Duke University Slides are derived from work by Profs. Tyler Bletsch and Andrew Hilton (Duke)

More information

Chapter 2 Operating-System Structures

Chapter 2 Operating-System Structures This chapter will discuss the following concepts: 2.1 Operating System Services 2.2 User Operating System Interface 2.3 System Calls 2.4 System Programs 2.5 Operating System Design and Implementation 2.6

More information

Chapter 7: Deadlocks 1

Chapter 7: Deadlocks 1 1 Reminders: February 24, 2014 I hope you had a good Reading Week! Exercise 3 is due this Wednesday Any questions about anything? Don t forget about Assignment 2, due next week 2 Comments on Exercise 2

More information

Software Engineering at VMware Dan Scales May 2008

Software Engineering at VMware Dan Scales May 2008 Software Engineering at VMware Dan Scales May 2008 Eng_BC_Mod 1.Product Overview v091806 The Challenge Suppose that you have a very popular software platform: that includes hardware-level and OS code that

More information

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG)

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG) SKILL AREA 304: Review Programming Language Concept Computer Programming (YPG) 304.1 Demonstrate an Understanding of Basic of Programming Language 304.1.1 Explain the purpose of computer program 304.1.2

More information

CS354 gdb Tutorial Written by Chris Feilbach

CS354 gdb Tutorial Written by Chris Feilbach CS354 gdb Tutorial Written by Chris Feilbach Purpose This tutorial aims to show you the basics of using gdb to debug C programs. gdb is the GNU debugger, and is provided on systems that

More information

Think like an Elm developer

Think like an Elm developer Think like an Elm developer Piper Niehaus Denver, CO, USA Backpacker / skier Nonprofit board chair Software Engineer at Pivotal Pivotal Tracker team Elm in Production since 2016 Internal Products and Services

More information

CS 167 Final Exam Solutions

CS 167 Final Exam Solutions CS 167 Final Exam Solutions Spring 2018 Do all questions. 1. [20%] This question concerns a system employing a single (single-core) processor running a Unix-like operating system, in which interrupts are

More information

19 File Structure, Disk Scheduling

19 File Structure, Disk Scheduling 88 19 File Structure, Disk Scheduling Readings for this topic: Silberschatz et al., Chapters 10 11. File: a named collection of bytes stored on disk. From the OS standpoint, the file consists of a bunch

More information

FAQ: Advanced Functions

FAQ: Advanced Functions Question 1: What are formulas and functions? Answer 1: Formulas are a type of data that can be entered into a cell in Excel. Formulas begin with an equal sign and use mathematical operators to calculate

More information

EEE 435 Principles of Operating Systems

EEE 435 Principles of Operating Systems EEE 435 Principles of Operating Systems Operating System Structure (Modern Operating Systems 1.7) Outline Operating System Structure Monolithic Systems Layered Systems Virtual Machines Exokernels Client-Server

More information

What are some common categories of system calls? What are common ways of structuring an OS? What are the principles behind OS design and

What are some common categories of system calls? What are common ways of structuring an OS? What are the principles behind OS design and What are the services provided by an OS? What are system calls? What are some common categories of system calls? What are the principles behind OS design and implementation? What are common ways of structuring

More information

Can t Believe It s Linux. a totally different and hypothetical linux distribution

Can t Believe It s Linux. a totally different and hypothetical linux distribution Can t Believe It s Linux a totally different and hypothetical linux distribution What s the Situation? ubuntu is doing pretty well OS X is doing a lot better crap is actually pretty cool nobody cares about

More information

Why Operating Systems? Topic 3. Operating Systems. Why Operating Systems? Why Operating Systems?

Why Operating Systems? Topic 3. Operating Systems. Why Operating Systems? Why Operating Systems? Topic 3 Why Operating Systems? Operating Systems Abstracting away from the Nuts and Bolts Early computers had no operating system. Programmers were responsible for: telling the computer when to load and

More information

Chapter 2: Operating-System Structures

Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System Calls System Programs Operating System

More information

ENCM 339 Fall 2017: Editing and Running Programs in the Lab

ENCM 339 Fall 2017: Editing and Running Programs in the Lab page 1 of 8 ENCM 339 Fall 2017: Editing and Running Programs in the Lab Steve Norman Department of Electrical & Computer Engineering University of Calgary September 2017 Introduction This document is a

More information

http://xkcd.com/224/ CS252 Programming Language Paradigms Prof. Tom Austin San José State University Fall 2014 What are some programming languages? Why are there so many? Different domains. Mobile devices

More information

Part II Composition of Functions

Part II Composition of Functions Part II Composition of Functions The big idea in this part of the book is deceptively simple. It s that we can take the value returned by one function and use it as an argument to another function. By

More information

UKNova s Getting Connectable Guide

UKNova s Getting Connectable Guide UKNova s Getting Connectable Guide Version 1.2 2010/03/22 1. WHAT IS "BEING CONNECTABLE" AND WHY DO I NEED IT? Being connectable means being able to give back to others it is the fundamental principle

More information

Recipes. Marketing For Bloggers. List Building, Traffic, Money & More. A Free Guide by The Social Ms Page! 1 of! 24

Recipes.  Marketing For Bloggers. List Building, Traffic, Money & More. A Free Guide by The Social Ms Page! 1 of! 24 16 Recipes Email Marketing For Bloggers List Building, Traffic, Money & More A Free Guide by The Social Ms Page 1 of 24 Brought to you by: Jonathan Gebauer, Susanna Gebauer INTRODUCTION Email Marketing

More information

Spam. Time: five years from now Place: England

Spam. Time: five years from now Place: England Spam Time: five years from now Place: England Oh no! said Joe Turner. When I go on the computer, all I get is spam email that nobody wants. It s all from people who are trying to sell you things. Email

More information

Filter and PivotTables in Excel

Filter and PivotTables in Excel Filter and PivotTables in Excel FILTERING With filters in Excel you can quickly collapse your spreadsheet to find records meeting specific criteria. A lot of reporters use filter to cut their data down

More information

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed. CHAPTER 2: SYSTEM STRUCTURES By I-Chen Lin Textbook: Operating System Concepts 9th Ed. Chapter 2: System Structures Operating System Services User Operating System Interface System Calls Types of System

More information

introduction week 1 Ritsumeikan University College of Information Science and Engineering Ian Piumarta 1 / 20 imperative programming about the course

introduction week 1 Ritsumeikan University College of Information Science and Engineering Ian Piumarta 1 / 20 imperative programming about the course week 1 introduction Ritsumeikan University College of Information Science and Engineering Ian Piumarta 1 / 20 class format 30 minutes (give or take a few) presentation 60 minutes (give or take a few) practice

More information

Lecture 10: Multi-Object Synchronization

Lecture 10: Multi-Object Synchronization CS 422/522 Design & Implementation of Operating Systems Lecture 10: Multi-Object Synchronization Zhong Shao Dept. of Computer Science Yale University Acknowledgement: some slides are taken from previous

More information

Win32 Multithreaded Programming Epub Gratuit

Win32 Multithreaded Programming Epub Gratuit Win32 Multithreaded Programming Epub Gratuit Many Windows developers still write code as if their application is a single entity that, while it is running, has complete control of all system resources.

More information

Chapter 2: System Structures

Chapter 2: System Structures Chapter 2: Operating System Structures Operating System Services System Calls Chapter 2: System Structures System Programs Operating System Design and Implementation Operating System Structure Virtual

More information

L4/Darwin: Evolving UNIX. Charles Gray Research Engineer, National ICT Australia

L4/Darwin: Evolving UNIX. Charles Gray Research Engineer, National ICT Australia L4/Darwin: Evolving UNIX Charles Gray Research Engineer, National ICT Australia charles.gray@nicta.com.au Outline 1. Project Overview 2. BSD on the Mach microkernel 3. Porting Darwin to the L4 microkernel

More information

CSE 4/521 Introduction to Operating Systems

CSE 4/521 Introduction to Operating Systems CSE 4/521 Introduction to Operating Systems Lecture 3 Operating Systems Structures (Operating-System Services, User and Operating-System Interface, System Calls, Types of System Calls, System Programs,

More information

OS concepts and structure. q OS components & interconnects q Structuring OSs q Next time: Processes

OS concepts and structure. q OS components & interconnects q Structuring OSs q Next time: Processes OS concepts and structure q OS components & interconnects q Structuring OSs q Next time: Processes OS Views Perspectives, OS as the services it provides its components and interactions Services to Users

More information

Alan J. Perlis - Epigrams on Programming

Alan J. Perlis - Epigrams on Programming Programming Languages (CS302 2007S) Alan J. Perlis - Epigrams on Programming Comments on: Perlis, Alan J. (1982). Epigrams on Programming. ACM SIGPLAN Notices 17(9), September 1982, pp. 7-13. 1. One man

More information

Lecture 1b: Why C++?

Lecture 1b: Why C++? Copyright by Bruce A. Draper. 2016, All Rights Reserved. Lecture 1b: Why C++? Announcements: For today, you should have read Weiss, Chapter 0, and taken the on-line quiz. If you haven t taken the quiz

More information

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet.

The name of our class will be Yo. Type that in where it says Class Name. Don t hit the OK button yet. Mr G s Java Jive #2: Yo! Our First Program With this handout you ll write your first program, which we ll call Yo. Programs, Classes, and Objects, Oh My! People regularly refer to Java as a language that

More information

Introduction to OpenMP

Introduction to OpenMP Introduction to OpenMP p. 1/?? Introduction to OpenMP Synchronisation Nick Maclaren Computing Service nmm1@cam.ac.uk, ext. 34761 June 2011 Introduction to OpenMP p. 2/?? Summary Facilities here are relevant

More information

Patching and Updating your VM SUSE Manager. Donald Vosburg, Sales Engineer, SUSE

Patching and Updating your VM SUSE Manager. Donald Vosburg, Sales Engineer, SUSE Patching and Updating your VM SUSE Manager Donald Vosburg, Sales Engineer, SUSE dvosburg@suse.com Why should I care? I just clone my base VM image, and after that it is not my problem... Understand the

More information

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager

COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager COMP 3500 Introduction to Operating Systems Project 5 Virtual Memory Manager Points Possible: 100 Submission via Canvas No collaboration among groups. Students in one group should NOT share any project

More information

The Context of Cryptography. Ramki Thurimella

The Context of Cryptography. Ramki Thurimella The Context of Cryptography Ramki Thurimella Role Professional Paranoia or Don t Trust Anything Blindly principle Cryptography by itself is useless, just as a lock by itself is useless Different weaknesses

More information

This course is designed for anyone who needs to learn how to write programs in Python.

This course is designed for anyone who needs to learn how to write programs in Python. Python Programming COURSE OVERVIEW: This course introduces the student to the Python language. Upon completion of the course, the student will be able to write non-trivial Python programs dealing with

More information

CMSC131. Hardware and Software. Hardware

CMSC131. Hardware and Software. Hardware CMSC131 Hardware and Software Hardware Hardware is what makes up the physical machine. Two of the same type of machines can have different brands of hardware used to build them. eg : Hayes Modem -vs- US

More information

CMSC131. Hardware and Software

CMSC131. Hardware and Software CMSC131 Hardware and Software Hardware Hardware is what makes up the physical machine. Two of the same type of machines can have different brands of hardware used to build them. eg : Hayes Modem -vs- US

More information

The do s and don ts of error handling. Joe Armstrong

The do s and don ts of error handling. Joe Armstrong The do s and don ts of error handling Joe Armstrong A system is fault tolerant if it continues working even if something is wrong Work like this is never finished it s always in-progress Hardware can fail

More information

Bring in several pieces of junk mail that have been opened and spread the mail around the classroom.

Bring in several pieces of junk mail that have been opened and spread the mail around the classroom. LESSON PLAN You ve Won a Prize! GRADES 3-5 UNIT 2 Essential Question What is spam, and what can you do about it? Lesson Overview Students learn what spam is, the forms it takes, and then identify strategies

More information

Operating Systems (2INC0) 2018/19. Introduction (01) Dr. Tanir Ozcelebi. Courtesy of Prof. Dr. Johan Lukkien. System Architecture and Networking Group

Operating Systems (2INC0) 2018/19. Introduction (01) Dr. Tanir Ozcelebi. Courtesy of Prof. Dr. Johan Lukkien. System Architecture and Networking Group Operating Systems (2INC0) 20/19 Introduction (01) Dr. Courtesy of Prof. Dr. Johan Lukkien System Architecture and Networking Group Course Overview Introduction to operating systems Processes, threads and

More information

Amber Weyland: [to cameraman] Just hold it there so we can see Mollie.

Amber Weyland: [to cameraman] Just hold it there so we can see Mollie. Interview Transcript Interviewer: Amber Weyland Interviewee: Mollie Hummer Cameraman: Christopher Smith [friend to both] Date: March 22, 2010 Beginning time of interview: 2:30pm End time of interview:

More information

Language Evaluation P L COS 301. Fall School of Computing and Information Science University of Maine. Language Evaluation COS 301.

Language Evaluation P L COS 301. Fall School of Computing and Information Science University of Maine. Language Evaluation COS 301. School of Computing and Information Science University of Maine Fall 2018 Outline 1 2 3 4 5 evaluation criteria Early (pre-1970s): more important for machine to read code easily After: realized SW maintenance

More information

How projects fail, why they fail and how to prevent failure. All in one easy lecture! DuRant Lewis, Atmel Corporation

How projects fail, why they fail and how to prevent failure. All in one easy lecture! DuRant Lewis, Atmel Corporation Engineering Disasters How projects fail, why they fail and how to prevent failure. All in one easy lecture! DuRant Lewis, Atmel Corporation A Night at the Whitney! Engineering Disasters Engineering Disasters

More information

Component V Supporting Materials / Learn More Interesting Facts. Interesting Facts

Component V Supporting Materials / Learn More Interesting Facts. Interesting Facts Component V Supporting Materials / Learn More 1.4.1 Interesting Facts No. Interesting Facts 1. All computers operate by following machine language programs. 2. Machine language programs are long sequence

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

File Systems. OS Overview I/O. Swap. Management. Operations CPU. Hard Drive. Management. Memory. Hard Drive. CSI3131 Topics. Structure.

File Systems. OS Overview I/O. Swap. Management. Operations CPU. Hard Drive. Management. Memory. Hard Drive. CSI3131 Topics. Structure. File Systems I/O Management Hard Drive Management Virtual Memory Swap Memory Management Storage and I/O Introduction CSI3131 Topics Process Management Computing Systems Memory CPU Peripherals Processes

More information

The great primary-key debate

The great primary-key debate http://builder.com.com/5100-6388-1045050.html Página 1 de 3 16/11/05 Log in Join now Help SEARCH: Builder.com GO Home : Architect : Database : The great primary-key debate Resources Newsletters Discussion

More information

System Administration for Beginners

System Administration for Beginners System Administration for Beginners Week 5 Notes March 16, 2009 1 Introduction In the previous weeks, we have covered much of the basic groundwork needed in a UNIX environment. In the upcoming weeks, we

More information

Basic Concepts & OS History

Basic Concepts & OS History Basic Concepts & OS History Nima Honarmand Administrivia TA: Babak Amin Azad Office hours: Monday & Wednesday, 5:30-7:00 PM Location: 2217 old CS building VMs ready; SSH Keys will be emailed today Lab1

More information

PROJECT 6: PINTOS FILE SYSTEM. CS124 Operating Systems Winter , Lecture 25

PROJECT 6: PINTOS FILE SYSTEM. CS124 Operating Systems Winter , Lecture 25 PROJECT 6: PINTOS FILE SYSTEM CS124 Operating Systems Winter 2015-2016, Lecture 25 2 Project 6: Pintos File System Last project is to improve the Pintos file system Note: Please ask before using late tokens

More information

Adobe Fireworks CS Essential Techniques

Adobe Fireworks CS Essential Techniques Adobe Fireworks CS4 HOW-TOs 100 Essential Techniques Jim Babbage 140 64 Creating Graphic Symbols Resizing Symbols When you resize any bitmap to a smaller size, pixel information is discarded. This is normally

More information

Making Address Spaces Smaller

Making Address Spaces Smaller ICS332 Operating Systems Spring 2018 Smaller Address Spaces Having small address spaces is always a good idea This is good for swapping: don t swap as often (because if address spaces are small, then RAM

More information

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edition

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edition Chapter 2: Operating-System Structures Silberschatz, Galvin and Gagne 2013 Chapter 2: Operating-System Structures Operating System Services User Operating System Interface System Calls Types of System

More information

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Computer Systems Engineering: Spring Quiz I Solutions

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Computer Systems Engineering: Spring Quiz I Solutions Department of Electrical Engineering and Computer Science MASSACHUSETTS INSTITUTE OF TECHNOLOGY 6.033 Computer Systems Engineering: Spring 2011 Quiz I Solutions There are 10 questions and 12 pages in this

More information

Factory Reset Locked Iphone 4 Without Computer

Factory Reset Locked Iphone 4 Without Computer Factory Reset Locked Iphone 4 Without Computer Factory reset iphone should be a hard decision, because all of things on iphone will be lost. of the easiest methods to restore iphone to factory settings

More information

Maximum Contiguous Subsequence Sum. Check out from SVN: MCSSRaces

Maximum Contiguous Subsequence Sum. Check out from SVN: MCSSRaces Q0 Maximum Contiguous Subsequence Sum Check out from SVN: MCSSRaces Good comments: Javadoc comments for public fields and methods. Explanations of anything else that is not obvious. Good variable and method

More information

THE DEFINITIVE GUIDE

THE DEFINITIVE GUIDE THE DEFINITIVE GUIDE TO OPTIMIZE YOUR EMAIL MARKETING Mailrelay.com KEYS TO OPTIMIZE YOUR E-MAIL MARKETING 01 WHAT TO INCLUDE IN YOUR NEWSLETTERS? 02 HOW TO ACHIEVE A HIGH AVERAGE OF VIEWS? 03 HOW OFTEN

More information

Kernel Types Simple OS Examples System Calls. Operating Systems. Autumn CS4023

Kernel Types Simple OS Examples System Calls. Operating Systems. Autumn CS4023 Operating Systems Autumn 2017-2018 Outline 1 2 3 Types of 2.4, SGG The OS Kernel The kernel is the central component of an OS It has complete control over everything that occurs in the system Kernel overview

More information

Using GitHub to Share with SparkFun a

Using GitHub to Share with SparkFun a Using GitHub to Share with SparkFun a learn.sparkfun.com tutorial Available online at: http://sfe.io/t52 Contents Introduction Gitting Started Forking a Repository Committing, Pushing and Pulling Syncing

More information

Secure Programming I. Steven M. Bellovin September 28,

Secure Programming I. Steven M. Bellovin September 28, Secure Programming I Steven M. Bellovin September 28, 2014 1 If our software is buggy, what does that say about its security? Robert H. Morris Steven M. Bellovin September 28, 2014 2 The Heart of the Problem

More information

FSMLabs White Paper The RTLinux embedded enterprise versus the Linux RT patches.

FSMLabs White Paper The RTLinux embedded enterprise versus the Linux RT patches. FSMLabs White Paper The RTLinux embedded enterprise versus the Linux RT patches. Abstract: FSMLabs patented decoupled real-time continues to hold a sustained performance, reliability, and programmability

More information

ELEC / COMP 177 Fall Some slides from Kurose and Ross, Computer Networking, 5 th Edition

ELEC / COMP 177 Fall Some slides from Kurose and Ross, Computer Networking, 5 th Edition ELEC / COMP 177 Fall 2014 Some slides from Kurose and Ross, Computer Networking, 5 th Edition Project #1 Starts in one week Is your Linux environment all ready? Bring your laptop Work time after quick

More information

6. Concurrency: Deadlock

6. Concurrency: Deadlock CSC400 - Operating Systems 6. Concurrency: Deadlock J. Sumey Deadlock one problem that results from multiprogramming def: a process (or thread) is said to be deadlocked if it is waiting for an event that

More information

CMSC 330: Organization of Programming Languages

CMSC 330: Organization of Programming Languages CMSC 330: Organization of Programming Languages Memory Management and Garbage Collection CMSC 330 - Spring 2013 1 Memory Attributes! Memory to store data in programming languages has the following lifecycle

More information

Cryptography Worksheet

Cryptography Worksheet Cryptography Worksheet People have always been interested in writing secret messages. In ancient times, people had to write secret messages to keep messengers and interceptors from reading their private

More information

Discussion Week 4. TA: Kyle Dewey. Monday, October 17, 11

Discussion Week 4. TA: Kyle Dewey. Monday, October 17, 11 Discussion Week 4 TA: Kyle Dewey Overview Project #1 debriefing System calls Project #2 Task 1 Bugs/Ugliness About that Project... I m not actually grading anything (probably) Clarity is a wonderful thing

More information

Stop Scope Creep. Double Your Profit & Remove The Stress of Selling Websites

Stop Scope Creep. Double Your Profit & Remove The Stress of Selling Websites Stop Scope Creep Double Your Profit & Remove The Stress of Selling Websites Why Do Projects Go Wrong? Imagine this: You ve agreed to do a specific project with a client. You start off well. But as the

More information

The Art and Science of Memory Allocation

The Art and Science of Memory Allocation Logical Diagram The Art and Science of Memory Allocation Don Porter CSE 506 Binary Formats RCU Memory Management Memory Allocators CPU Scheduler User System Calls Kernel Today s Lecture File System Networking

More information

Incoherent Rant about Code

Incoherent Rant about Code Incoherent Rant about Code Aras Pranckevičius Unity Unity Bootcamp II, 2010 Nov-Dec This is pretty much on random code related things with no structure. Expect lots of topic jumps for no reason at all!

More information

CSC Operating Systems Spring Lecture - II OS Structures. Tevfik Ko!ar. Louisiana State University. January 17 th, 2007.

CSC Operating Systems Spring Lecture - II OS Structures. Tevfik Ko!ar. Louisiana State University. January 17 th, 2007. CSC 4103 - Operating Systems Spring 2008 Lecture - II OS Structures Tevfik Ko!ar Louisiana State University January 17 th, 2007 1 Announcements Teaching Assistant: Asim Shrestrah Email: ashres1@lsu.edu

More information

Announcements. Operating System Structure. Roadmap. Operating System Structure. Multitasking Example. Tevfik Ko!ar

Announcements. Operating System Structure. Roadmap. Operating System Structure. Multitasking Example. Tevfik Ko!ar CSC 4103 - Operating Systems Spring 2008 Lecture - II OS Structures Tevfik Ko!ar Teaching Assistant: Asim Shrestrah Email: ashres1@lsu.edu Announcements All of you should be now in the class mailing list.

More information

Chapter 3. Revision Control

Chapter 3. Revision Control Chapter 3 Revision Control We begin our journey into software engineering before we write a single line of code. Revision control systems (RCSes) such as Subversion or CVS are astoundingly useful for single-developer

More information

The WideRuled Story Generator Tutorial Alex Mitchell Communications and New Media Programme National University of Singapore

The WideRuled Story Generator Tutorial Alex Mitchell Communications and New Media Programme National University of Singapore The WideRuled Story Generator Tutorial Alex Mitchell Communications and New Media Programme National University of Singapore Table of Contents 1. Introduction... 1 2. Getting Started... 2 3. Creating Characters...

More information

Introduction to Programming

Introduction to Programming CHAPTER 1 Introduction to Programming Begin at the beginning, and go on till you come to the end: then stop. This method of telling a story is as good today as it was when the King of Hearts prescribed

More information

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 15-323/15-623 Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019 1 Overview In this project, you will create a program that performs real-time audio generation. There

More information

Introduction to Parallel Computing. CPS 5401 Fall 2014 Shirley Moore, Instructor October 13, 2014

Introduction to Parallel Computing. CPS 5401 Fall 2014 Shirley Moore, Instructor October 13, 2014 Introduction to Parallel Computing CPS 5401 Fall 2014 Shirley Moore, Instructor October 13, 2014 1 Definition of Parallel Computing Simultaneous use of multiple compute resources to solve a computational

More information

Using the Computer for Essays

Using the Computer for Essays + Using the Computer for Essays Why can t I just write it out and turn it in? Common Core Standard: Writing 10.6 - Use technology, including the Internet, to produce and publish writing and to interact

More information

Processes and Threads

Processes and Threads COS 318: Operating Systems Processes and Threads Kai Li and Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall13/cos318 Today s Topics u Concurrency

More information

CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise

CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise CS61A Notes Week 6: Scheme1, Data Directed Programming You Are Scheme and don t let anyone tell you otherwise If you re not already crazy about Scheme (and I m sure you are), then here s something to get

More information

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen Computer Programming Computers can t do anything without being told what to do. To make the computer do something useful, you must give it instructions. You can give a computer instructions in two ways:

More information

These are exciting times for Macintosh users. When Apple unleashed Mac

These are exciting times for Macintosh users. When Apple unleashed Mac Chapter 1 A Brief Tour of Cocoa Development In This Chapter Programming for Mac OS X Discovering the Cocoa development process Exploring the tools for programming Cocoa applications These are exciting

More information

WebRTC: Possible? Don McGregor Research Associate MOVES Institute.

WebRTC: Possible? Don McGregor Research Associate MOVES Institute. WebRTC: Possible? Don McGregor Research Associate MOVES Institute mcgredo@nps.edu The World Classic simulation applications: can we do them in the web browser? Pretty much. I think. 2 1990s Start: Classic

More information

2SKILL. Variables Lesson 6. Remembering numbers (and other stuff)...

2SKILL. Variables Lesson 6. Remembering numbers (and other stuff)... Remembering numbers (and other stuff)... Let s talk about one of the most important things in any programming language. It s called a variable. Don t let the name scare you. What it does is really simple.

More information

Python for Analytics. Python Fundamentals RSI Chapters 1 and 2

Python for Analytics. Python Fundamentals RSI Chapters 1 and 2 Python for Analytics Python Fundamentals RSI Chapters 1 and 2 Learning Objectives Theory: You should be able to explain... General programming terms like source code, interpreter, compiler, object code,

More information

CS197U: A Hands on Introduction to Unix

CS197U: A Hands on Introduction to Unix CS197U: A Hands on Introduction to Unix Lecture 4: My First Linux System Tian Guo University of Massachusetts Amherst CICS 1 Reminders Assignment 2 was due before class Assignment 3 will be posted soon

More information

Programming with MPI

Programming with MPI Programming with MPI p. 1/?? Programming with MPI One-sided Communication Nick Maclaren nmm1@cam.ac.uk October 2010 Programming with MPI p. 2/?? What Is It? This corresponds to what is often called RDMA

More information