OPERATING SYSTEMS SHOULD PROVIDE TRANSACTIONS Donald E. Porter and - - PowerPoint PPT Presentation

operating systems should provide transactions
SMART_READER_LITE
LIVE PREVIEW

OPERATING SYSTEMS SHOULD PROVIDE TRANSACTIONS Donald E. Porter and - - PowerPoint PPT Presentation

OPERATING SYSTEMS SHOULD PROVIDE TRANSACTIONS Donald E. Porter and Emmett Witchel The University of Texas at Austin Example: browser plug-in upgrade 2 write new plug-in binary start browser, old config, old plug-in arguments corrupt data


slide-1
SLIDE 1

OPERATING SYSTEMS SHOULD PROVIDE TRANSACTIONS

Donald E. Porter and Emmett Witchel The University of Texas at Austin

slide-2
SLIDE 2

Example: browser plug-in upgrade

2

write new plug-in binary start browser, old config,

  • ld plug-in arguments

corrupt data files exec post-install script (updates browser config)

 API can’t ensure consistent updates to OS resources  Concurrency and crashes cause subtle inconsistencies

slide-3
SLIDE 3

System Transactions

 Express consistency requirements to OS  Transaction wraps group of system calls

 Results isolated until commit  Interfering operations automatically serialized

 Long-overdue OS feature

 Natural abstraction  Solves important problems  Practical implementation

3

slide-4
SLIDE 4

Transactional Software Install

sys_xbegin(); apt-get upgrade sys_xend();

 A failed install is automatically rolled back

 Concurrent operations are not

 System crash: reboot to entire upgrade or none  Concurrent apps see consistent state

4

slide-5
SLIDE 5

System Transactions

5

 Operating systems should provide them  Operating systems can provide them

slide-6
SLIDE 6

The POSIX API is broken

6

 System resources have long-standing race conditions

 Time-of-check-to-time-of-use (TOCTTOU)  Temporary file creation  Signal handling

 Correct, concurrent apps need system-level isolation  Multi-core chips raise importance of concurrency

slide-7
SLIDE 7

System-level races

if(access(“foo”)) { fd = open(“foo”); … }

(root)

7

foo == secret

slide-8
SLIDE 8

Complex work-arounds

 TOCTTOU: users write their own directory traversal

 openat(), fstatat(), etc.  User re-implements filename translation

 Race between open/fcntl

 Add CLOSE_ON_EXEC flags to 15 system calls

 Temporary file creation libraries

 mkstemp,tmpfile, etc.

8

slide-9
SLIDE 9

Work-arounds don’t work

9

 Complex APIs do not yield secure programs  Experts can’t even agree

 mkstemp man page:

“Don’t use this function, use tmpfile(3) instead.”

 www.securecoding.cert.org - VOID FI039-C:

“It is thus recommended that…mkstemp() be used [instead of tmpfile()]”

 Transactions can fix the problem

slide-10
SLIDE 10

TOCTTOU redux

sys_xbegin(); if(access(“foo”)) { fd = open(“foo”); read(fd,…); … } sys_xend();

(root)

10

slide-11
SLIDE 11

Transactions solve important problems

11

 Applications

 Replace databases for simple synchronization  Support system calls in transactional memory apps  Tolerate faults in untrusted software modules  Atomically update file contents and access control list

 Easier to write OS extensions

 System Tx + Journal = Tx Filesystem

slide-12
SLIDE 12

Hasn’t this already been done?

donporter@wesley:~$ man transaction No manual entry for transaction

12

slide-13
SLIDE 13

Related Systems

13

 Similar interface, different implementation

 QuickSilver [SOSP ‘91], TABS [SOSP ‘85]

 Weaker guarantees

 TxF, Valor [FAST ‘09]

 Only file system transactions  Different interface, similar implementation

 Speculator [SOSP ’05, OSDI ‘06]

 Terms “transaction” and “OS” appear in paper title

 TxLinux [SOSP ’07, ASPLOS ‘09]

slide-14
SLIDE 14

Can OSes provide transactions?

 TxOS: Extends Linux 2.6.22 to support transactions

 Runs on commodity hardware

 Rest of talk:

 Approach  Validation

14

slide-15
SLIDE 15

Version Management

15

 How to keep old and new data?

 Need old data to roll back

 TxOS approach:

 Transactions operate on private copies of data  Replace old data structures at commit

 Example: kernel data structures

slide-16
SLIDE 16

TxOS Version Management

Transaction sys_xbegin(); if(access(“foo”)){ fd = open(“foo”); write(fd, “Hi”); } sys_xend();

File “foo”

16

Hi

slide-17
SLIDE 17

Object versioning in TxOS

 Deadlock-free

 Transactions do not hold kernel locks across syscalls  Follows existing locking discipline

 Previous work used 2-phase locking, undo log

 Prone to deadlock

 Efficient – a pointer swap per committed object

 Copy-on-write optimizations

17

slide-18
SLIDE 18

Serializing Tx with No-Tx

18

 Important property for intuitive semantics

 Supports incremental adoption

 Serialize TOCTTOU attacker

 Attacker will not use transactions

 Hard to support in software systems

 Not provided by historical OSes, many STMs

slide-19
SLIDE 19

Validation

19

 Is implementation tractable?  Is performance acceptable?

slide-20
SLIDE 20

Tractable, challenging implementation

 Transactions:

 Add 8,600 LOC to Linux  Minor modifications to 14,000 LOC

 Simple API, not a simple implementation

 Hard to write concurrent programs  Developers need good abstractions

 Transactions are worth the effort

20

slide-21
SLIDE 21

Acceptable Performance

21

  • 300
  • 200
  • 100

100 200 300 400 500 Seq Write Seq Read Rand Write Rand Read

 Speedup compared to unmodified Linux

LFS Large File Phase %Slowdown % Speedup

 40% overhead for dpkg install

slide-22
SLIDE 22

OSes can support transactions

22

 Tractable Implementation  Acceptable Performance

slide-23
SLIDE 23

OSes should provide transactions

 Solve long-standing problems

 Replace ad hoc solutions

 Broad range of applications  Acceptable cost

http://www.cs.utexas.edu/~porterde/txos porterde@cs.utexas.edu

23