The document provides an overview of the CSCE 510 - Systems Programming course, including a brief history of systems programming and Unix, the course content which involves programming assignments in C like ls and shell programming, and references for further reading. It discusses the kernel and its tasks like process scheduling. It also summarizes file types, pathnames, the directory hierarchy, and basic Unix commands.
Although the "Modules" system has been around since the early 1990ties it has yet to find widespread adoption outside of the scientific computing and HPC community. Most FOSS developers rely on a wide range of tools to abstract and manage their Linux and UN!X environments for different scripting languages, compiler toolchains and applications. This problem has been long solved in the world of High Performance Computing where optimization of applications, toolchains and libraries is paramount. Environment Modules are a wonderful tool that will save time, help ease of development processes, reproducibility, and management of your development environment. This talk will give insight into how Modules work, which implementations are out there and how to use Modules instead of language bound tools as well as a comparison with common tools that the community uses to develop on Python and Ruby (for example) projects.
I intend to give a 20 min overview of the "Environment Modules" system as deployed on many scientific and HPC sites to FOSS developers, students and linux enthusiasts.
This will include a comparison of different Modules implementations their history and typical use cases in HPC and development environments and how Modules can be of help to FOSS developers and systems administrators. As a developer and systems engineer, I am familiar with a lot of different systems to manage multiple installations of e.g. script languages their environments and libraries. I'll give a short overview and comparison of those and compare these systems with Modules and show how developers and engineers alike can save time and effort in managing their environment for all applications, toolchains and script languages.
Although the "Modules" system has been around since the early 1990ties it has yet to find widespread adoption outside of the scientific computing and HPC community. Most FOSS developers rely on a wide range of tools to abstract and manage their Linux and UN!X environments for different scripting languages, compiler toolchains and applications. This problem has been long solved in the world of High Performance Computing where optimization of applications, toolchains and libraries is paramount. Environment Modules are a wonderful tool that will save time, help ease of development processes, reproducibility, and management of your development environment. This talk will give insight into how Modules work, which implementations are out there and how to use Modules instead of language bound tools as well as a comparison with common tools that the community uses to develop on Python and Ruby (for example) projects.
I intend to give a 20 min overview of the "Environment Modules" system as deployed on many scientific and HPC sites to FOSS developers, students and linux enthusiasts.
This will include a comparison of different Modules implementations their history and typical use cases in HPC and development environments and how Modules can be of help to FOSS developers and systems administrators. As a developer and systems engineer, I am familiar with a lot of different systems to manage multiple installations of e.g. script languages their environments and libraries. I'll give a short overview and comparison of those and compare these systems with Modules and show how developers and engineers alike can save time and effort in managing their environment for all applications, toolchains and script languages.
A talk listing few main shortcomings of Docker, showing potential however questionable remedies, to finally introduce Alpine Linux - biggest revolution in Docker of recent.
Following on that rabbit a bit deeper down its hole, we introduce Unikernels - the next big thing in cloud, embedded, big data and scientific computing... well at least Docker is betting on it too.
This is a short introduction to some basic concepts about device drivers on Linux, and does not get into the nuts and bolts of it; uses a serial driver as an example, and how does it fit within the TTY layer. Includes code walk-through.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
A talk listing few main shortcomings of Docker, showing potential however questionable remedies, to finally introduce Alpine Linux - biggest revolution in Docker of recent.
Following on that rabbit a bit deeper down its hole, we introduce Unikernels - the next big thing in cloud, embedded, big data and scientific computing... well at least Docker is betting on it too.
This is a short introduction to some basic concepts about device drivers on Linux, and does not get into the nuts and bolts of it; uses a serial driver as an example, and how does it fit within the TTY layer. Includes code walk-through.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Welcome to the first live UiPath Community Day Dubai! Join us for this unique occasion to meet our local and global UiPath Community and leaders. You will get a full view of the MEA region's automation landscape and the AI Powered automation technology capabilities of UiPath. Also, hosted by our local partners Marc Ellis, you will enjoy a half-day packed with industry insights and automation peers networking.
📕 Curious on our agenda? Wait no more!
10:00 Welcome note - UiPath Community in Dubai
Lovely Sinha, UiPath Community Chapter Leader, UiPath MVPx3, Hyper-automation Consultant, First Abu Dhabi Bank
10:20 A UiPath cross-region MEA overview
Ashraf El Zarka, VP and Managing Director MEA, UiPath
10:35: Customer Success Journey
Deepthi Deepak, Head of Intelligent Automation CoE, First Abu Dhabi Bank
11:15 The UiPath approach to GenAI with our three principles: improve accuracy, supercharge productivity, and automate more
Boris Krumrey, Global VP, Automation Innovation, UiPath
12:15 To discover how Marc Ellis leverages tech-driven solutions in recruitment and managed services.
Brendan Lingam, Director of Sales and Business Development, Marc Ellis
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
2. Overview
Last Time
Outback
Readings for today
Text Chapter 1 and 2
Prologue
A Brief History - Systems programming and Unix (Chap 1)
Interlude - Course Pragmatics, CS man of the day, Quiz
Epilogue
fundamental Unix/systems programming (Chap 2)
Kernel, Shell, Users/groups, Directory Hierarchy
File I/O model
processes
3. What is Systems Programming?
Systems Software
Donavon Diagram
1/14/2013 CSCE 510 Sp
13 -
Slide - 3
Systems Programming by John Donovan, 1972
4. The Dark Ages - JCL
1/14/2013 CSCE 510
Slide - 4
Darkages ~ 1972
JCL?
Batch Processing
Job card?
Systems Programming by John Donovan, 1972
5. What is CSCE 510?
First version – assembly language,
macro processors,
linkers …
Unix/C version circa 1987 2002 version
Make
M4/cpp macro processors
Shell1: variables, regexps, filename completion, history
Shell2: I/O redirection, signals, …
webserver
2008 Summer version – done in ruby
1/4/2013 CSCE 510 Sp 13
-
Slide - 5
7. CSCE 510 the 2013 version
1/4/2013 CSCE 510 Sp 13
-
Slide - 7
The Usual Suspects: programming assignments
ls, ar, cpp/m4, shell1, shell2, webserver0, SSH
New possibilities
Windows – don’t get me started
Environments: Rails, Posix Threads, Iphone/Android Apps, Vmware,
Cloud Computing, SourceForge, GitHub
Unix Software: Shells. Gcc/g++, make, script/pseudo-terminals
Tools: Valgrind, Cucumber/capybara, Rspec, gdb,
Database: Mysql; postgress
Languages: …
Editors/IDEs: Nano/pico, Vi/Vim, Emacs, OS X Textmate
IDE: Eclipse Netbeans
Software Engineering: Agile, Git, Junit, Bugzilla,
8. Which Language?
1/4/2013 CSCE 510 Sp 13
-
Slide - 8
Linux Journal Best of 2012
Best Programming Language
Python 28%
C++ 19%
C 18.9%
Java 8.2% Perl 6.1% Other 4% Ruby 3.1% JavaScript
2.4% C# .7% Erlang .7% Haskell
(2012-12-02). Linux Journal December 2012 (Kindle
Locations 1628-1633). BELLTOWN MEDIA INC. Kindle
Edition.
Linux Journal December 2012
10. More Linux Journal Best of 2012
1/4/2013 CSCE 510 Sp 13
-
Slide - 10
Best IDE –Eclipse 27%, vim 26%, Netbeans 5% …
BEST REVISION CONTROL SYSTEM Git 63%, Subversion 18.6%, …
BEST OPEN-SOURCE CONFIGURATION MANAGEMENT TOOL – Puppet
42% …
BEST PLATFORM FOR DEVELOPING RICH INTERNET APPS - HTML5 87%
BEST PACKAGE MANAGEMENT APPLICATION – apt 34%
BEST CONTENT MANAGEMENT SYSTEM
WordPress 35%, Drupal 28%, Joomla 15%
BEST LINUX-FRIENDLY WEB HOSTING COMPANY–other 19%
BEST LINUX BOOK
Tie between Linux in a Nutshell and Debian Administrator’s Handbook
Second place goes to The Linux Programming Interface: A Linux and UNIX
System Programming Handbook, by Michael Kerrisk.
BEST OTHER LINUX-BASED GADGET – Raspberry Pi
Linux Journal December 2012
11. A Brief History of Time (UNIX and C)
1/4/2013 CSCE 510 Sp 13
-
Slide - 11
1969 – First Unix Ken Thompson at AT&T Bell Labs
Unix pun on MULTICS
Ideas from Multics:
Tree structured file system
Program for interpreting commands (shell)
Files – unstructured streams of bytes
1970 Unix rewritten in assembly for DEC PDP-11
C – Dennis Ritchie – a systems programming language
BCPL B (Thompson) C
1970 Kernel rewritten in C – eases porting to other
machines
1984 Turing Award Lecture – C compiler learned
backdoor
Chapter 1 and …
12. Berkeley Software Division (BSD)
1/4/2013 CSCE 510 Sp 13
-
Slide - 12
(1975) Thompson visiting Prof. at UC-Berkeley
A student Bill Joy added new features
Vi editor
C shell
First paging virtual memory management (Unix) BSD 4.2
Sendmail, Pascal compiler
Later co-founded Sun Microsystems
BSD 4.2 (1983) – full TCP/IP & sockets API
13. Unix after Unix 7th Edition (1979)
1/4/2013 CSCE 510 Sp 13
-
Slide - 13
BSD continued at UC-Berkeley
Bell Labs System III Systems V
POSIX standard (1988)
Other Software
X windows
Free Software Foundation
GNU Public License
Minix – (1988)Unix like; MINI-uniX; for education; A.
Tannenbaum
15. GNU
1/4/2013 CSCE 510 Sp 13
-
Slide - 15
Recursive acronym “GNU’s not UNIX”
http://www.gnu.org/ not http://www.gnu.com/
Richard Stallman (1983) Goal a free Unix
Known for Free Software movement, GNU, Emacs, gcc
Never really released GNU operating system
Free Software Foundation
http://www.fsf.org/
http://en.wikipedia.org/wiki/GNU
16. Linux -
1/4/2013 CSCE 510 Sp 13
-
Slide - 16
(1991) Linus Torvalds
For Intel x86 systems
Moved to big Iron
more than 90% of today's 500 fastest
supercomputers run some variant of Linux
Network routers
Embedded systems
Android
http://en.wikipedia.org/wiki/Linux
17. Computer Science Concepts- Interrupt
1/4/2013 CSCE 510 Sp 13
-
Slide - 17
Mr. Smith has a plan that
he is executing
“run for touchdown”
Suddenly an interrupt
arrives
Clowney
Now he is executing
another plan
Find helmet, walk to
sideline
18. Course Pragmatics
1/4/2013 CSCE 510 Sp 13
-
Slide - 18
Text: The Linux Programming Interface by M. Kerrisk
Website:
http://www.cse.sc.edu/~matthews/Courses/510/index.html
Code Examples
CSE linux server /class/csce510-001
Assignments –
Dropbox - https://dropbox.cse.sc.edu/
Late HW – not accepted
20. Homework Assignment
1/4/2013 CSCE 510 Sp 13
-
Slide - 20
Write a C/C++ program to read command line
arguments and just print them.
Read “man getopt” (all sections).
What sections of the manual has a getopt section?
What types of strings does getopt usually process?
21. References
1/4/2013 CSCE 510 Sp 13
-
Slide - 21
Text: The Linux Programming Interface by M. Kerrisk
http://man7.org/tlpi/
Other Books
Adv Prog in Unix Environment (APUE) by Richard Stevens
(Rago 2nd ed)
http://www.kohala.com/start/apue.html
http://www.apuebook.com/ 2nd edition site – code etc
C by Kernighan and Ritchie (K&R) 2nd edition
http://en.wikipedia.org/wiki/The_C_Programming_Language
http://clc-wiki.net/wiki/K%26R2_solutions
http://cm.bell-labs.com/who/dmr/
22. 1/4/2013 CSCE 510 Sp 13
-
Slide - 22
Linux in general
http://www.linux.org/
Man Pages
http://man7.org/linux/man-pages/index.html
Slashdot
StackOverflow
Python
http://www.python.org/
http://docs.python.org/2/tutorial/
23. The kernel
1/4/2013 CSCE 510 Sp 13
-
Slide - 23
What is the kernel?
What distinguishes it from the Operating System?
24. Kernel Tasks
1/4/2013 CSCE 510 Sp 13
-
Slide - 24
Process scheduling
Memory management
File System
Access to devices
/dev – device drivers
Networking
System call API
25. Kernel Mode and user mode
1/4/2013 CSCE 510 Sp
13 -
Slide - 25
When an application
makes a system call
Time command
hermes> time make
… 10 pages of compiles .. uses cc
real 0m33.067s
user 0m13.545s
sys 0m5.596s
hermes>
27. File Types
1/4/2013 CSCE 510 Sp 13
-
Slide - 27
Filenames
Regular files
Special Files
Directory
. (this directory),
..(my parent),
list of files contained (filename and inode number)
od –c . “used to work” but alas no longer
Symbolic link
hermes> ln –s README link
hermes> ls -l link
lrwxrwxrwx 1 matthews faculty 6 2013-01-13 17:51 link -> README
28. Pathnames
1/4/2013 CSCE 510 Sp 13
-
Slide - 28
Unix basic commands with hierarchy
Current working directory – each running process has a
“current working directory” assigned to it
cd dir - (change directory to dir)
pwd
Relative paths
Absolute Paths – start with /
/ = root of the directory hierarchy
30. The Shell
1/4/2013 CSCE 510 Sp 13
-
Slide - 30
Command interpreter in original Unix
Read command
Perhaps pre-process command
Fork/execute
Return exit status of command
A little history revisited
Bourne Shell (sh)
C chell
Korn shell
Bourne Again shell (bash)
31. Users, Groups and Permissions
1/4/2013 CSCE 510 Sp 13
-
Slide - 31
User ID (UID)
Setuid
Group (GID)
Permissions
hermes> ls -l
…
drwxr-xr-x 2 matthews faculty 57 2012-10-15 09:54 acl
Super user = root; sudo
32. Man – the Online Manual
1/4/2013 CSCE 510 Sp 13
-
Slide - 32
The sections of the manual
1. Commands
2. System Calls
3. Library functions
4. Special files (usually found in /dev)
5. File formats and conventions eg /etc/passwd
6. Games
7. Miscellaneous (including macro packages and
conventions), e.g. man(7), groff(7)
8. System administration commands (usually only for root)
9. Kernel routines [Non standard]
Man command
33. Man – the command
1/4/2013 CSCE 510 Sp 13
-
Slide - 33
hermes> man chmod
CHMOD(1) User Commands CHMOD(1)
NAME
chmod - change file mode bits
SYNOPSIS …
man –k chmod
man –s 2 chmod
Online
http://man.he.net/
http://www.tldp.org/guides.html
http://man7.org/linux/man-pages/index.html