<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Operating_System_Transactions</id>
	<title>Operating System Transactions - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Operating_System_Transactions"/>
	<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Operating_System_Transactions&amp;action=history"/>
	<updated>2026-05-19T16:32:48Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=Operating_System_Transactions&amp;diff=1623&amp;oldid=prev</id>
		<title>2024년 12월 2일 (월) 08:19에 Ahn9807님의 편집</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Operating_System_Transactions&amp;diff=1623&amp;oldid=prev"/>
		<updated>2024-12-02T08:19:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2024년 12월 2일 (월) 08:19 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l26&quot;&gt;26번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;26번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; TxOS Overview&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;; TxOS Overview&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Read와 Write에 대한 접근이 분리된 memory buffer에서만 일어나고, 나중에 commit point에서 commit될때 한번에 반영하도록 하였다. TxOS는 object-based software transactional memory system이라는 Transactional기법을 사용하였으며, 이를 위해서 logging과 two-phase locking을 반영하였다. &amp;#039;&amp;#039;&amp;#039;TxOS는 optimistic한 Transaction이며, conflicts이 드물다(rare)하다는 가정하에 디자인되었다.&amp;#039;&amp;#039;&amp;#039; txOS는 &amp;lt;code&amp;gt;sys_xbegin()&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;sys_xend()&amp;lt;/code&amp;gt;사이에 존재하는 selective한 150개 정도의 시스템콜이 transaction하다는 것을 보장하였다. 굳이 보장할 필요가 없는 시스템콜은(e.g., reboot, mount, mremap, mprotect ... etc) Future work으로 남겨두었다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;: Read와 Write에 대한 접근이 분리된 memory buffer에서만 일어나고, 나중에 commit point에서 commit될때 한번에 반영하도록 하였다. TxOS는 object-based software transactional memory system이라는 Transactional기법을 사용하였으며, 이를 위해서 logging과 two-phase locking을 반영하였다. &amp;#039;&amp;#039;&amp;#039;TxOS는 optimistic한 Transaction이며, conflicts이 드물다(rare)하다는 가정하에 디자인되었다.&amp;#039;&amp;#039;&amp;#039; txOS는 &amp;lt;code&amp;gt;sys_xbegin()&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;sys_xend()&amp;lt;/code&amp;gt;사이에 존재하는 selective한 150개 정도의 시스템콜이 transaction하다는 것을 보장하였다. 굳이 보장할 필요가 없는 시스템콜은(e.g., reboot, mount, mremap, mprotect ... etc) Future work으로 남겨두었다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Challenges ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Design ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Design ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;33번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;31번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Managing transactional state: 보통 DB나 transactional OS에서는 data를 바로 작성하고 대신 undo log를 지니고 있는다. 그러나 이러한 방식은 deadlock에 취약하며 큰 오버헤드를 가진다. 이를 해결하기 위해서 lazy version management를 사용하였다. lazy version management에서는 모든 concurrent access thread들이 변경사항을 내부 buffer에만 반영하며 최종적으로 winner만이 data를 커널에 작성할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Managing transactional state: 보통 DB나 transactional OS에서는 data를 바로 작성하고 대신 undo log를 지니고 있는다. 그러나 이러한 방식은 deadlock에 취약하며 큰 오버헤드를 가진다. 이를 해결하기 위해서 lazy version management를 사용하였다. lazy version management에서는 모든 concurrent access thread들이 변경사항을 내부 buffer에만 반영하며 최종적으로 winner만이 data를 커널에 작성할 수 있다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Integration with transactional memory: 보통 User-level application에서 Transaction한 부분의 내분에서는 시스템콜을 사용하지 못하였다. TxOS는 이러한 부분에서도 System call을 사용할 수 있도록 하였다. 즉 Application은 스스로의 memory state를 roll-back해주어야 한다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Integration with transactional memory: 보통 User-level application에서 Transaction한 부분의 내분에서는 시스템콜을 사용하지 못하였다. TxOS는 이러한 부분에서도 System call을 사용할 수 있도록 하였다. 즉 Application은 스스로의 memory state를 roll-back해주어야 한다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Implementation ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Conclusion ==&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=Operating_System_Transactions&amp;diff=1622&amp;oldid=prev</id>
		<title>Ahn9807: 새 문서: 분류: ACM SOSP   Donald E. Porter, Owen S. Hofmann, Christopher J. Rossbach, Alexander Benn, and Emmett Witchel  SOSP’09  == 개요 == 시스템 콜을 Transaction하게 만든 디자인을 제시한 논문이다.  == Motivation == Applications developer들은 논리적으로 연관된 여러개의 시스템콜을 사용한다. 이러한 Complexity는 buggy하거나 malicious한 어플리케이션에서 Critical한 Attack point혹은 Data lose로 이어질 수 있다...</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Operating_System_Transactions&amp;diff=1622&amp;oldid=prev"/>
		<updated>2024-12-02T06:56:13Z</updated>

		<summary type="html">&lt;p&gt;새 문서: &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:ACM_SOSP&quot; title=&quot;분류:ACM SOSP&quot;&gt;분류: ACM SOSP&lt;/a&gt;   Donald E. Porter, Owen S. Hofmann, Christopher J. Rossbach, Alexander Benn, and Emmett Witchel  SOSP’09  == 개요 == &lt;a href=&quot;/noriwiki/index.php?title=%EC%8B%9C%EC%8A%A4%ED%85%9C_%EC%BD%9C&quot; title=&quot;시스템 콜&quot;&gt;시스템 콜&lt;/a&gt;을 Transaction하게 만든 디자인을 제시한 논문이다.  == Motivation == Applications developer들은 논리적으로 연관된 여러개의 시스템콜을 사용한다. 이러한 Complexity는 buggy하거나 malicious한 어플리케이션에서 Critical한 Attack point혹은 Data lose로 이어질 수 있다...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[분류: ACM SOSP]]&lt;br /&gt;
&lt;br /&gt;
 Donald E. Porter, Owen S. Hofmann, Christopher J. Rossbach, Alexander Benn, and Emmett Witchel&lt;br /&gt;
 SOSP’09&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
[[시스템 콜]]을 Transaction하게 만든 디자인을 제시한 논문이다.&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
Applications developer들은 논리적으로 연관된 여러개의 시스템콜을 사용한다. 이러한 Complexity는 buggy하거나 malicious한 어플리케이션에서 Critical한 Attack point혹은 Data lose로 이어질 수 있다. 예를 들어서, Software install과정에서 Fault가 나면, 소프트웨어전체 state가 박살날수 있다. Application transaction은 Security적으로도 의미가 있다. 예를 들어서, [[TOCTOU]]와 같은 Race condition은 Application의 state가 첫번째 시스템콜 사용시와, 나중 시스템콜 사용시에 달라지는 것을 사용하는 것으로, 만약 System call들의 Atomicity를 보장한다면 TOCTOU과 같은 Race condition을 이용하는 버그를 사전에 차단 가능하다.&lt;br /&gt;
&lt;br /&gt;
== Importance ==&lt;br /&gt;
Operating system은 Atomicity를 위해서 race condition을 삭제하거나 fsync와 같은 시스템콜을 제공한다. 그러나, 각각의 시스템콜의 Atomicity를 보장하는 경우는 많아도, 전체 시스템콜의 Atomicity를 보장하는 법은 없다.&lt;br /&gt;
&lt;br /&gt;
== Main Ideas ==&lt;br /&gt;
; [[ACID]]를 보장하는 시스템을 위해서는 다음과 같은 것들을 보장해야 한다.&lt;br /&gt;
* Atomicity, Consistency, Isolation, and Durability&lt;br /&gt;
** Atomicity and Consistency: Serializable, Recoverable, Repeatable&lt;br /&gt;
** Isolation: 동시에 Writer는 하나만 존재해야 함&lt;br /&gt;
** Durability: 프로그래머가 Durable할지 말지 결정할 수 있음 (e.g., TOCTOU를 없어는 것은 Durability없어도 가능)&lt;br /&gt;
* Non-transactional thread와 Transactional thread간의 상호작용이 있을 경우, Serialize가 되어야 함; Strong isolation이라 부르며 제일 강력한 Serialize보장임&lt;br /&gt;
* Transaction이 livelock을 다른 시스템의 Transaction과 존재해서는 안됌&lt;br /&gt;
* Operating system의 state뿐만 아니라 Application의 state도 Transaction하게 구현해야 함. TxOS에서는 Single thread일 경우 [[COW]]를 이용해서 간단히 구현할 수 있는 API를 제공하나, 그 의외의 상황은 프로그래머가 처리해야 함.&lt;br /&gt;
* 만약 다른 Non-transactional thread와 Communication이 있으면, Transaction을 보장할 수 없음. 이는 프로그래머가 처리해야 함.&lt;br /&gt;
&lt;br /&gt;
; TxOS Overview&lt;br /&gt;
: Read와 Write에 대한 접근이 분리된 memory buffer에서만 일어나고, 나중에 commit point에서 commit될때 한번에 반영하도록 하였다. TxOS는 object-based software transactional memory system이라는 Transactional기법을 사용하였으며, 이를 위해서 logging과 two-phase locking을 반영하였다. &amp;#039;&amp;#039;&amp;#039;TxOS는 optimistic한 Transaction이며, conflicts이 드물다(rare)하다는 가정하에 디자인되었다.&amp;#039;&amp;#039;&amp;#039; txOS는 &amp;lt;code&amp;gt;sys_xbegin()&amp;lt;/code&amp;gt;와 &amp;lt;code&amp;gt;sys_xend()&amp;lt;/code&amp;gt;사이에 존재하는 selective한 150개 정도의 시스템콜이 transaction하다는 것을 보장하였다. 굳이 보장할 필요가 없는 시스템콜은(e.g., reboot, mount, mremap, mprotect ... etc) Future work으로 남겨두었다.&lt;br /&gt;
&lt;br /&gt;
== Challenges ==&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
# Interoperability and fairness: 만약 transactional 그리고 non-transaction thread가 conflict이 나면 먼저들어온 스레드가 먼저 처리되도록 하였다.&lt;br /&gt;
# Managing transactional state: 보통 DB나 transactional OS에서는 data를 바로 작성하고 대신 undo log를 지니고 있는다. 그러나 이러한 방식은 deadlock에 취약하며 큰 오버헤드를 가진다. 이를 해결하기 위해서 lazy version management를 사용하였다. lazy version management에서는 모든 concurrent access thread들이 변경사항을 내부 buffer에만 반영하며 최종적으로 winner만이 data를 커널에 작성할 수 있다.&lt;br /&gt;
# Integration with transactional memory: 보통 User-level application에서 Transaction한 부분의 내분에서는 시스템콜을 사용하지 못하였다. TxOS는 이러한 부분에서도 System call을 사용할 수 있도록 하였다. 즉 Application은 스스로의 memory state를 roll-back해주어야 한다.&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
</feed>